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

Sloučit dokumenty s jejich vnořenými poli a jejich vnořenými poli

Můžete použít $reduce s $concatArrays vyrovnat strukturu dat a poté spustit $unwind s $replaceRoot získat jednoho člena na dokument:

db.collection.aggregate([
  { "$project": {
    "members": {
      "$concatArrays": [
        [{ "userID": "$userID", "userType": "$userType" }],
        { "$reduce": {
          "input": "$clients",
          "initialValue": [],
          "in": {
            "$concatArrays": [
              "$$value",
              [{ "userID": "$$this.userID", "userType": "$$this.userType" }],
              "$$this.members"
            ]
          }
        }}
      ]
    }
  }},
  { "$unwind": "$members" },
  { "$replaceRoot": { "newRoot": "$members" }}
])

Hřiště Mongo



  1. Nelze určit serializační informace pro *výraz* pomocí .Date

  2. Uzamčení dokumentu v MongoDB

  3. Spring MongoRepository se aktualizuje nebo upserting místo vkládání

  4. Sestavení indexu MongoDB – Zabránění uživatelům ve spouštění nových sestavení