Ich habe Array in Subdokument wie dieseWie Filter Array in Subdokument mit MongoDB
{
"_id" : ObjectId("512e28984815cbfcb21646a7"),
"list" : [
{
"a" : 1
},
{
"a" : 2
},
{
"a" : 3
},
{
"a" : 4
},
{
"a" : 5
}
]
}
Kann ich Subdokument für eine> 3
Mein Filterergebnis erwarten unter
{
"_id" : ObjectId("512e28984815cbfcb21646a7"),
"list" : [
{
"a" : 4
},
{
"a" : 5
}
]
}
Ich versuche, zu verwenden $elemMatch
aber gibt das erste übereinstimmende Element im Array zurück
Meine Frage:
db.test.find({ _id" : ObjectId("512e28984815cbfcb21646a7") }, {
list: {
$elemMatch:
{ a: { $gt:3 }
}
}
})
Das Ergebnis Rückkehr ein Element in Array
{ "_id" : ObjectId("512e28984815cbfcb21646a7"), "list" : [ { "a" : 4 } ] }
und ich versuche mit $match
Aggregat zu verwenden, aber nicht
db.test.aggregate({$match:{_id:ObjectId("512e28984815cbfcb21646a7"), 'list.a':{$gte:5} }})
arbeiten Es ist das Rück alle Element in Array
{
"_id" : ObjectId("512e28984815cbfcb21646a7"),
"list" : [
{
"a" : 1
},
{
"a" : 2
},
{
"a" : 3
},
{
"a" : 4
},
{
"a" : 5
}
]
}
Kann ich Element in Array filtern, um das Ergebnis als Ergebnis zu erhalten?
Ist die Aggregation Betrieb das Dokument ändern oder ist es nur eine Auswahl durchführen? – Cherif
@Cherif 'aggregate' wirkt sich nicht auf das Dokument selbst aus. – JohnnyHK
Wie würden Sie vorgehen, wenn Sie das Ergebnis dieser Abfrage auf dem Client veröffentlichen möchten? – samson