Encontrar el objeto del objeto MongoDB que no devuelve ningún valor -- mongodb campo con nosql camp Relacionados El problema

Find Object of Object MongoDB not returning any values


0
vote

problema

Español

Tengo esta estructura de datos:

  { "_id" : ObjectId("582ecaa97be792282ca31bc4"), "hero" : {     "5001" : {         "id" : 5001         "name" : "Rogue"              }     "5002" : {         "id" : 5002         "name" : "Mage"              }     "5003" : {         "id" : 5002         "name" : "Paladin"              }          } }   

Tengo la consulta.

  db.getCollection('hero').find({"Hero":{"5001":{"id" : 5001}}})   

devuelve 0 resultados. Podría almacenar los hero por separado, pero me gustaría saber primero cómo hacer esta consulta. Lo que me gustaría sacar de esto son todos los datos menores de 5001 si consulta con 5001 y así sucesivamente.

¡Gracias!

Editar: Encontré la respuesta utilizando la notación de puntos, ya probé la notación de puntos, pero lo conseguí un poco mal cuando lo intenté, pensé que era solo para matrices. Aquí está lo que harías si alguien más está buscando.

  db.Runes.find({ "hero.5001.id": 5001 },{"hero.5001":1})   
Original en ingles

I have this data structure:

{ "_id" : ObjectId("582ecaa97be792282ca31bc4"), "hero" : {     "5001" : {         "id" : 5001         "name" : "Rogue"              }     "5002" : {         "id" : 5002         "name" : "Mage"              }     "5003" : {         "id" : 5002         "name" : "Paladin"              }          } } 

I have the query.

db.getCollection('hero').find({"Hero":{"5001":{"id" : 5001}}}) 

It returns 0 results. I could store the Heros separately, but I would like to know how to do this query first. What I would like to get out of this is all data under 5001 if I query with 5001 and so forth.

Thanks!

Edit: I found the answer by using dot notation, I already tried dot notation but i got it a bit wrong when trying it, I thought it was only for arrays. Here is what you would do if anyone else is looking.

db.Runes.find({ "hero.5001.id": 5001 },{"hero.5001":1}) 
     
   
   

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

En primer lugar, todos los campos distinguen entre mayúsculas y minúsculas, por lo que no puede consultar un campo "héroe" con "héroe".

Segundo Si está consultando documentos anidados, debe usar la "Notación DOT"

https://docs.mongodb.com/manual/core/ Documento / # Dot-Notation

Así que la forma correcta de su documento será.

  db.getCollection('hero').find({"hero.5001.id" : 5001})   

devolverá todo el documento. Hasta que todo el objeto Hero con una clave de 5002 y 5003 también regresará a medida que pertenecen al mismo documento. Puede usar la proyección para proyectar solo los campos requeridos. que se puede hacer de abajo

  db.getCollection('hero').find({"hero.5001.id": 5001},{"hero.5001" : 1})   

Aquí hay más información sobre los operadores de consulta y proyección de MongoDB https://docs.mongodb.com/v3.2/reference/ operador / Query /

 

First of all, All the fields are case sensitive so you cannot query a "hero" field with "Hero".

second if you are querying nested documents you should use the "dot notation"

https://docs.mongodb.com/manual/core/document/#dot-notation

so the proper way to your that document will be.

db.getCollection('hero').find({"hero.5001.id" : 5001}) 

it will return the entire document. So entire hero object with 5002 and 5003 key will also return as they belong to the same document. You can use projection to project only the required fields. which can be done as below

db.getCollection('hero').find({"hero.5001.id": 5001},{"hero.5001" : 1}) 

Here are more information about Mongodb query and projection operators https://docs.mongodb.com/v3.2/reference/operator/query/

 
 
0
 
vote

solo prueba esto

  db.getCollection('hero').find({"hero.5001.id" : 5001})   
 

Just try this

db.getCollection('hero').find({"hero.5001.id" : 5001}) 
 
 

Relacionados problema

1  NOSQL vs MySQL - Schemaless vando con Cassandra  ( Nosql vs mysql going schemaless with cassandra ) 
Aquí están los hechos: Tenemos mucho (l o t) de los datos que vienen todos los días. Cada archivo que recibimos está en un formato CSV y, si bien hay un ...

1  Qué mejor lugar / camino para guardar imágenes con MongoDB / PHP  ( What better place way to save images with mongodb php ) 
Buenos días Gente, Tengo una pregunta, Estoy creando una aplicación web en PHP que hará uso de la base de datos MongoDB, es decir, una base de datos NOSQL. ...

0  ¿Cuál es la estructura de datos adecuada para almacenar valores con múltiples claves?  ( What is the proper data structure for storing values with multiple keys ) 
Soy nuevo en NOSQL o DOCUMENT DB. Por favor, corríjame si no hay algo claro. Estoy pensando en esta pregunta: ¿Cuál es la estructura de datos adecuada para al...

0  Esquema de mesa NOSQL  ( Nosql table schema ) 
Estoy tratando de planificar un esquema de tabla NOSQL. Hay relaciones en mis datos, pero en su mayoría son lo que sería N: n en un DB relacional; Hay muy poc...

4  ¿La mejor manera de almacenar parejas con pesas para 500,000 usuarios?  ( Best way to store pairs with weights for 500 000 users ) 
Estoy construyendo un sitio donde quiero hacer coincidir con las personas por interés común. Hago esto al calcular un peso entre cada usuario y determinar qui...

1  Cuando se utiliza una base de datos que supuestamente es segura, ¿necesito sincronizar mis propios hilos?  ( When using a database that is supposedly thread safe do i need to synchronize m ) 
Estoy escribiendo una aplicación de Python que utiliza una base de datos de replegamiento. Tengo tres hilos de trabajo que deben ejecutarse y posiblemente acc...

7  API del cliente Cassandra ¡API API API DEL MOTOR DE APLICACIÓN?  ( Cassandra client api most similar to app engine datastore api ) 
Con el anuncio del nuevo modelo de precios del motor de la aplicación de Google, me he dado cuenta de que mi solicitud no podrá sostenerse debido al precio ex...

6  Velocidad de lectura aleatoria de Cassandra  ( Cassandra random read speed ) 
Todavía estamos evaluando a Cassandra para nuestro almacén de datos. Como una prueba simple Muy , inserté un valor para 4 columnas en la familia Keyspace1 / ...

2  Instale y conecte COUCHBASE CLIENT ASP.NET  ( Install and connect couchbase client asp net ) 
Realmente no puedo conectar mi cliente C # con CouchBase DB. Realmente no sé lo que hago mal .. También por qué el nombre de mi servidor es 192.168.1.3 ¿Y qué...

1  Cómo consultar Dynamodb por cadena entre + Otras teclas  ( How to query dynamodb by string between other keys ) 
Estoy tratando de diseñar una consulta de Dynamodb que cumple con los siguientes criterios: get items by type, category, and date between(date_1, date_2) ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos