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:

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?

InformationsquelleAutor cpburnz | 2014-04-23
Schreibe einen Kommentar