2011-01-16 15 views
9

mam tej struktury w mojej kolekcji:znaleźć wewnątrz MongoDB hash

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

Jak znajdę "a" i "b" wewnątrz baz? To nie działa db.my_collection.find({baz : {a : 1, b : 2});

Nie dbam o to, czy "c" to "fafofu" czy "cacocu" nie ma znaczenia.

Odpowiedz

19

Możesz użyć ., aby dotrzeć do obiektu baz.

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

Dziękuję bardzo. – Mantovani

+2

@Mantovani: jeśli ta odpowiedź rozwiązała twój problem, powinieneś ją zaakceptować, klikając na symbol "tick" obok niej. – thkala

0

Może gdyby spróbować następujących

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

Można użyć find/findOne:

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

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

Niestety nie mam możliwości sprawdzenia tego.

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

Mój problem polega na znalezieniu danych, ponieważ jeśli nie znasz klucza, trudno jest zoptymalizować wydajność wyszukiwania. Nie zgodziłbyś się?

+8

Rozumiem, że większość ludzi na świecie nie jest rodowitymi użytkownikami języka angielskiego (nie jestem też jednym), ale podoba mi się to, czy nie, angielski to lingua franca branży IT. Powinieneś rozważyć przetłumaczenie swojej odpowiedzi na język angielski, aby reszta z nas mogła ją przeczytać i skomentować. – thkala

+2

Wszystkie odpowiedzi należy podać w języku angielskim tutaj. Na szczęście mówiłem po portugalsku po portugalsku przez około dziesięć lat, więc mogłem to przetłumaczyć dla ciebie. Przepraszam, jeśli nie nosiłem dokładnie twojego znaczenia. – Sampson

+2

@ Jonathan Sampson: Dziękuję za poświęcenie czasu na przetłumaczenie tego – thkala

Powiązane problemy