2013-03-26 23 views
14

Come interrogare tutti {"module" : "B"}?query mongodb per sottocampo

La seguente interrogazione non funziona:

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

Grazie una tonnellata!

dati ci assomiglia:

{ 
    "_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

Questo è molto strano, identificativo del documento (_id) campo – ajduke

risposta

27

Prova:

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

La differenza è la vostra query originale sarebbe cercare di corrispondere su quel intero documento secondario (cioè dove _id è un documento secondario contenente un campo "modulo" con valore "B" e nient'altro)

Riferimento: MongoDB Dot Notation

1

Usa notazione:

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

Per Corrispondenza esatta sul documento secondario

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

la query utilizza dot notazione per i campi di accesso in una subdocument:

Refference link

+1

Hai un preventivo in più dopo la B (o uno mancante prima e it). – tandrewnichols

Problemi correlati