ho matrice in documento secondario come questoCome filtrare matrice in documento secondario con MongoDB
{
"_id" : ObjectId("512e28984815cbfcb21646a7"),
"list" : [
{
"a" : 1
},
{
"a" : 2
},
{
"a" : 3
},
{
"a" : 4
},
{
"a" : 5
}
]
}
Posso filtrare documento secondario per un> 3
mio aspettarsi risultato qui sotto
{
"_id" : ObjectId("512e28984815cbfcb21646a7"),
"list" : [
{
"a" : 4
},
{
"a" : 5
}
]
}
provo utilizzare $elemMatch
ma restituisce il primo elemento corrispondente nell'array
La mia domanda:
db.test.find({ _id" : ObjectId("512e28984815cbfcb21646a7") }, {
list: {
$elemMatch:
{ a: { $gt:3 }
}
}
})
Il risultato restituito un elemento in ordine di
{ "_id" : ObjectId("512e28984815cbfcb21646a7"), "list" : [ { "a" : 4 } ] }
e io cerco di utilizzare aggregati con $match
ma non funziona
db.test.aggregate({$match:{_id:ObjectId("512e28984815cbfcb21646a7"), 'list.a':{$gte:5} }})
E 'restituire tutti gli elementi in ordine di
{
"_id" : ObjectId("512e28984815cbfcb21646a7"),
"list" : [
{
"a" : 1
},
{
"a" : 2
},
{
"a" : 3
},
{
"a" : 4
},
{
"a" : 5
}
]
}
Posso filtrare l'elemento nella matrice per ottenere risultati come previsto?
Vuol l'operazione di aggregazione modificare il documento o lo fa solo eseguire una selezione? – Cherif
@Cherif 'aggrega' non ha effetto sul documento stesso. – JohnnyHK
Come procedere, se si desidera pubblicare il risultato di tale query sul client? – samson