Mam tablicę w dokument podrzędny jak tenJak filtrować tablicy w dokument podrzędny z MongoDB
{
"_id" : ObjectId("512e28984815cbfcb21646a7"),
"list" : [
{
"a" : 1
},
{
"a" : 2
},
{
"a" : 3
},
{
"a" : 4
},
{
"a" : 5
}
]
}
mogę filtrować dokument podrzędny przez> 3
My oczekiwać skutkować poniżej
{
"_id" : ObjectId("512e28984815cbfcb21646a7"),
"list" : [
{
"a" : 4
},
{
"a" : 5
}
]
}
staram do użycia $elemMatch
, ale zwraca pierwszy pasujący element w tablicy
Moje zapytanie:
db.test.find({ _id" : ObjectId("512e28984815cbfcb21646a7") }, {
list: {
$elemMatch:
{ a: { $gt:3 }
}
}
})
Zwrot wynik jeden element w tablicy
{ "_id" : ObjectId("512e28984815cbfcb21646a7"), "list" : [ { "a" : 4 } ] }
i próbuję użyć kruszywa $match
ale nie działa
db.test.aggregate({$match:{_id:ObjectId("512e28984815cbfcb21646a7"), 'list.a':{$gte:5} }})
To powrócić wszystkie elementy w tablicy
{
"_id" : ObjectId("512e28984815cbfcb21646a7"),
"list" : [
{
"a" : 1
},
{
"a" : 2
},
{
"a" : 3
},
{
"a" : 4
},
{
"a" : 5
}
]
}
Czy mogę filtrować element w tablicy, aby uzyskać wynik w oczekiwany sposób?
Czy operacja agregacja zmodyfikować dokument, czy też po prostu przeprowadzić wybór? – Cherif
@Cherif 'aggregate' nie wpływa na sam dokument. – JohnnyHK
Jak byś postąpił, gdybyś chciał opublikować wynik tego zapytania dla klienta? – samson