2017-12-27 13 views
0

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.

Antwort

0

können Sie verwenden

{ 
 
    "$match": { 
 
     "$and": [ 
 
       {"type": "person" }, 
 
       {"value.age": {"$gte":15}}, 
 
     ] 
 
    } 
 
}

+0

, 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 –

Verwandte Themen