Ich habe gründlich vor dem Posten dieser Frage recherchiert, aber ich konnte keine genaue Lösung finden. Ich habe die unten gezeigten StrukturMongoDB Query Array von Filialdokumenten
stname: "SC",
dob : "1985",
education {[
{name : Lancaster,
year : 2013},
{name : Manchester,
year : 2001,
grad : 2004},
{name : Gambia,
year : 2001,
grad : 2011}
]}
Also habe ich nur Dokumente zurückgeben möchten, die Felder haben grad. Also sollten die letzten zwei Dokumente zurückgegeben werden.
habe ich versucht, die folgenden Abfragen, aber ohne Erfolg
db.applicants.find({"education" : { $elemMatch : {"grad" : {$exists : true}}}}, {"name":1, "education.grad" : 1}).pretty()
gibt nur das erste Spiel, wie unten gezeigt, ist das erste Dokument
{
"_id" : ObjectId("574dd5fcbda73af19e361a3f"),
"name" : "SC",
"education" : [
{
},
{
"grad" : "2004"
},
{
"grad" : "2011"
}
]
}
Auch die folgende Abfrage Ihnen ähnliche Ergebnisse liefert leer, Das ist ein leeres Dokument wo immer grad Feld nicht verfügbar ist.
db.applicants.find({"education.grad" : { $exists : true}}, {"education.grad" : {$exists : true}, "education.grad" : 1, name : 1 , dob : 1}).pretty()
Ich habe eine ähnliche Frage hier zu beantworten: http://stackoverflow.com/questions/37510908/mongodb-search-by-datetime-type-not-working/37511250 – felipsmartins
@ felipsmartins, ich denke, dass sie ganz anders sind, Er versuchte, basierend auf einem Feld abzufragen. – fanbondi
Oh, ich verstehe. Ich fürchte, du musst die Aggregation benutzen. – felipsmartins