2011-01-16 8 views
9

tengo esta estructura en mi colección:encuentra dentro de un hash de mongodb

{foo : 1, bar : 4, baz : {a : 1, b : 2 ,c : "fafofu"}} 

¿Cómo encuentro "a" y "b" dentro de Baz? No funciona db.my_collection.find({baz : {a : 1, b : 2});

No me importa si "c" es "fafofu" o "cacocu" no importa.

Respuesta

19

Puede usar . para alcanzar el objeto baz.

db.my_collection.find({"baz.a" : 1, "baz.b" : 2}); 
+0

Muchas gracias. – Mantovani

+2

@Mantovani: si esta respuesta resolvió su problema, entonces debe aceptarlo haciendo clic en el símbolo "tic" junto a él. – thkala

0

Tal vez si se intenta la siguiente

{foo : 1, bar : 4, a: ["1"], b: ["2"], "c": ["fafofu"]} 

usted podría utilizar find/findOne:

print(db.???.findOne({ c: "fafofu" }).foo); 

http://www.mongodb.org/display/DOCS/Full+Text+Search+in+Mongo

Por desgracia, no tienen la capacidad de probar esto.

print(db.???.baz.findOne({ c: "fafofu" }).foo); 

Mi problema es cómo encontrar los datos, becauase si no conoce la clave es difícil optimizar el rendimiento de su búsqueda. ¿No estarías de acuerdo?

+8

Entiendo que la mayoría de las personas en el mundo no son hablantes nativos de inglés (tampoco soy uno) pero, le guste o no, el inglés es la lengua franca de la industria de TI. Debería considerar traducir su respuesta al inglés para que el resto de nosotros pueda leerla y comentarla. – thkala

+2

Todas las respuestas se deben proporcionar en inglés aquí. Afortunadamente, he estado hablando portugués brasileño durante aproximadamente una década, así que pude traducir esto para usted. Me disculpo si no transmití tu significado exactamente. – Sampson

+2

@Jonathan Sampson: Gracias por tomarse el tiempo para traducir esto – thkala

Cuestiones relacionadas