Ich bin ziemlich neu in MongoDB, projizieren und ich habe, was hoffentlich Frage ist eine einfache:Wie nur passende Felder von verschachtelten Array in Mongo Shell Abfrage
ich ein verschachteltes Schema haben, wo ich ein Feld haben, das eine ist Array, wobei jedes Element dieses Arrays ein Objekt ist, das selbst ein Array-Feld hat.
Zum Beispiel:
> db.mytest.insert({
name: 'a',
top: [
{x:1, y:2, nest: [{p:1, q:2}, {p:2, q:3}]},
{x:2, y:3, nest: [{p:4, q:5}, {p:6, q:7}]}
]
})
ich für bestimmte Werte von p abfragen kann ganz gut, und kann sogar mein Ergebnis an das erste Anpassungselement von top
begrenzen:
> db.mytest.findOne({'top.nest': {$elemMatch: {p:6}}}, {'top.nest.$': 1})
{"_id":ObjectId(...), top: [{x:2, y: 3, nest: [{p:4, q:5}, {p:6, q:7}]}]}
Das bringt mich zu meine Frage: {'top.nest.$': 1}
und {'top.$': 1}
als mein Projektionsdokument liefern beide das gleiche Ergebnis. Wie kann ich meine Suchergebnisse so beschränken, dass nur das erste übereinstimmende Element von nest
enthalten ist?
Benötige ich einen zweiten Durchlauf, der das Ergebnis dieses Abfragetyps iteriert?