2013-03-26 8 views
14

Jak zapytać wszystkich {"module" : "B"}?Zapytanie mongodb według sub-pola

poniższa kwerenda nie działa:

db.XXX.find({ "_id" : { "module" : "B" } }); 

Dzięki ton!

Istnieje danych wygląda następująco:

{ 
    "_id" : {"module" : "A","date" : ISODate("2013-03-18T07:00:00Z")}, 
    "value" : {"count" : 1.0} 
} 

{ 
    "_id" : {"module" : "B","date" : ISODate("2013-03-18T08:00:00Z")}, 
    "value" : {"count" : 2.0} 
} 
+0

Jest to bardzo dziwne, identyfikator dokumentu (_id) field – ajduke

Odpowiedz

27

Spróbuj:

db.XXX.find({ "_id.module" : "B" }); 

Różnica jest oryginalna kwerenda będzie próbował dopasować na tym cała poddokument (tj. gdzie _id jest poddokumentem zawierającym pole "moduł" o wartości "B" i nic więcej)

referencyjny: MongoDB Dot Notation

1

Korzystanie dot notacji:

db.XXX.find({ "_id.module" : "B" }) 
1

dla konkretnych meczu na dokument podrzędny

db.bios.find(
    { 
    '_id.module': 'B' 
    } 
) 

kwerendy używa dot notacji do pól dostępowych w subdocument:

Refference link

+1

Masz dodatkowy cytat po B (lub brakującym) e to). – tandrewnichols