MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Обединяване на документи с техните вложени масиви и техните вложени масиви

Можете да използвате $reduce с $concatArrays за изравняване на вашата структура от данни и след това стартирайте $unwind с $replaceRoot за да получите един член на документ:

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" }}
])

Mongo Playground



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Използване на Hibernate OGM с облак MongoDB Atlas M0 (безплатно ниво)

  2. mongodb 4x по-бавен от sqlite, 2x по-бавен от csv?

  3. Как да правите заявки с множество условия и тези условия са зависими

  4. Заявка на Mongodb въз основа на елемент на конкретна позиция в масива

  5. Как мога да използвам добавката mongolab към Heroku от python?