Wieder nur bestimmte Felder aus der Projektion array sub-Dokument
Ich freu mich auf MongoDB-Dokumentation in die $
und $elemMatch
Projektionen. Ich versuche, herauszufinden, wie die Rückkehr nur eine Teilmenge einer
Projektion array-Felder, aber ich kann nicht scheinen, um es herauszufinden.
Related posts:
-
Ich versuche nicht, führen Sie eine $slice von mongodb aggregation framework - Fetch first-Dokument, das Feld den verschachtelten array.
-
Noch bin ich versucht zu glätten Sie das sub-Dokument aus Nur Rückgabe array-Wert in "mongo" - Projektion, denn ich will noch einige Felder aus dem oberen Dokument.
Sagen, ich habe die folgenden Dokumente in der test
Sammlung:
{
"_id": "A",
"array": [
{"key": 1, "name": "foo", "data": {}},
{"key": 2, "name": "bar", "data": {}}
],
"extra": {}
},
{
"_id": "B",
"array": [
{"key": 3, "name": "spam", "data": {}},
{"key": 4, "name": "eggs", "data": {}}
],
"extra": {}
}
Die Abfrage, die ich effektiv durchführen wollen, ist:
db.test.findOne({"array.key": 1}, {"array.$.name": 1, "extra": 1})
Ich würde erwarten, dass es nur die Rückkehr name
unter dem sub-Dokument ist in der
array wo key
war 1
. E. g.,
{
"_id": "A",
"array": [
{"name": "foo"}
],
"extra": {}
}
Aber wenn ich ausführen, die Abfrage, bekomme ich diese statt:
{
"_id": "A",
"array": [
{"key": 1, "name": "foo", "data": {}}
],
"extra": {}
}
Die identisch ist mit der Abfrage:
db.test.findOne({"array.key": 1}, {"array.$": 1, "extra": 1})
Ich habe auch versucht im folgenden, die Ergebnisse in die gleichen:
db.test.findOne({"array.key": 1}, {"array.$": 1, "array.name": 1, "extra": 1})
Gibt es eine Möglichkeit, nur eine Teilmenge der Felder für array.$
statt die ganze sub-Dokument?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie speziell versuchen, dies zu tun, ohne die Verwendung von Aggregat?
db.students.update( { _id: 4, "grades.grade": 85 }, { $set: { "grades.$.std" : 6 } } )