Ich habe Teilindizes auf Mongo getestet, und es scheint, die Verwendung eines aggregation expression in der $match
Bühne stört die Verwendung des richtigen Index.Mongo Aggregation Match-Ausdruck und partielle Indizes
Zum Beispiel, ich habe eine data
Sammlung mit folgenden Dokumenten:
{
"type": "person",
"value": {
"id": 1,
"name": "Person 1",
"age": 10
}
},
{
"type": "person",
"value": {
"id": 2,
"name": "Person 2",
"age": 20
}
}
Und ich eine Teilindex für {"type": "person"}
Dokumente. Wenn ich die Aggregation
ausführen, registriert der Index einen Treffer, aber wenn ich die nächste Aggregation tun, tut es nicht.
{
"$match": {
"$expr": {
"$and": [
{ "$eq": ["$type", "person"] },
{ "$gte": ["$value.age", 15] },
]
}
}
}
Sind Teilindizes und Aggregationsausdrücke in $match
inkompatibel? Kann ich das irgendwie machen?
PS: Ich brauche Aggregationsausdrücke, weil ich $lookup
mit dem Let und Pipeline syntax mache.
, die in meiner Frage das Äquivalent der ersten Aggregation ist. Ich bin mir bewusst, dass ich das tun kann, aber das verwendet keine [Aggregationsausdrücke] (https://docs.mongodb.com/manual/meta/aggregation-quick-reference/#aggregation-expressions). Editierte Frage zu klären –