MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Aggregationsabfrage – Umbenennen von Feldern, die aus eingebetteten Dokumenten zurückgegeben werden

Es gibt ein paar Ansätze dafür, aber es hängt weitgehend von Ihrer MongoDB-Version ab. Neuere Versionen ab 2.6 und höher unterstützen den $ Karte Operator, den Sie in $project zu tun, was Sie wollen:

db.friend.aggregate([
    { "$project": {
        "name": 1,
        "buddies": {
            "$map": {
                "input": "$friends",
                "as": "el",
                "in": {
                    "nickName": "$$el.name",
                    "age": "$$el.age"
                }
            }
        }
    }}
])

In früheren Versionen würden Sie $unwind um mit den Array-Elementen zu arbeiten und über $gruppe :

db.collection.aggregate([
    { "$unwind": "$friends" },
    { "$group": {
        "_id": "$_id",
        "name": { "$first": "$name" },
        "buddies": {
            "$push": {
                "nickName": "$friends.name",
                "age": "$friends.age"
            }
        }
    }}
])

Die erste Form ist etwas effizienter, da Sie den Array-Inhalt nicht denormalisieren und mehr Dokumente in der Pipeline zur Verarbeitung erstellen.