sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Aggregation Query- Byt namn på fält som returneras från inbäddade dokument

Det finns ett par metoder för detta, men det beror till stor del på din MongoDB-version. Nyare versioner från 2.6 och uppåt stöder $ karta operator som du kan använda i $project att göra vad du vill:

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

I tidigare versioner skulle du använda $unwind kod> att arbeta med arrayelementen och rekonstruera via $grupp :

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

Med den första formen är lite mer effektiv eftersom du inte avnormaliserar arrayinnehållet och producerar fler dokument i pipeline att bearbeta.



  1. Hur gör man inre joining i MongoDB?

  2. sluta mongodb skapa dbs och samlingar dynamiskt

  3. MongoDB:Hitta dokumentgivna fältvärden i ett objekt med en okänd nyckel

  4. Mongoose find() returnerar inte resultat