sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB Aggregation Query - Omdøb felter returneret fra indlejrede dokumenter

Der er et par tilgange til dette, men det afhænger i høj grad af din MongoDB-version. Nyere versioner fra 2.6 og opefter understøtter $ kort operator, som du kan bruge i $project at gøre, hvad du vil:

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

I tidligere versioner ville du bruge $unwind at arbejde med array-elementerne og rekonstruere via $gruppe :

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

Med den første form er lidt mere effektiv, da du ikke denormaliserer matrixindholdet og producerer flere dokumenter i pipelinen til at behandle.



  1. MongoDB C# Driver - Ignorer felter ved binding

  2. Sådan forbinder du Mongodb Atlas til Spring

  3. C# MongoDB.Driver GetServer er væk, hvad nu?

  4. MongoDB-søgning i samling