sql >> Databáze >  >> NoSQL >> MongoDB

Agregační dotaz MongoDB – Přejmenovat pole vrácená z vložených dokumentů

K tomu existuje několik přístupů, ale do značné míry to závisí na vaší verzi MongoDB. Novější verze od 2.6 a vyšší podporují $ mapa operátor, který můžete použít v $project dělat, co chcete:

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

V předchozích verzích byste použili $unwind pracovat s prvky pole a znovu sestavit pomocí $group :

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

První formulář je o něco efektivnější, protože nedennormalizujete obsah pole a nevytváříte více dokumentů, které se mají zpracovat.



  1. K čemu slouží dvojtečky v klíčích Redis

  2. MongoDB fulltextové vyhledávání s haskell ovladačem

  3. Zkontrolujte ověření MongoDB pomocí ovladače Java 3.0

  4. MongoDB C# připojení/odpojení (oficiální ovladač)