MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để tổng hợp mảng tra cứu lồng nhau trong mongoose?

  • $lookup với user bộ sưu tập
  • $unwind deconstruct id_user mảng
  • $lookup với language thu thập và trả lại bằng các ngôn ngữ languages lĩnh vực
  • $map để lặp lại giao diện của id_user.language mảng
  • $reduce để lặp lại vòng lặp của language mảng được trả về từ bộ sưu tập, hãy kiểm tra điều kiện nếu language_id khớp rồi trả về name
db.cvsubmit.aggregate([
  {
    $lookup: {
      from: "user",
      localField: "id_user",
      foreignField: "_id",
      as: "id_user"
    }
  },
  { $unwind: "$id_user" },
  {
    $lookup: {
      from: "language",
      localField: "id_user.language.language_id",
      foreignField: "_id",
      as: "languages"
    }
  },
  {
    $addFields: {
      languages: "$$REMOVE",
      "id_user.language": {
        $map: {
          input: "$id_user.language",
          as: "l",
          in: {
            _id: "$$l._id",
            level: "$$l.level",
            name: {
              $reduce: {
                input: "$languages",
                initialValue: "",
                in: {
                  $cond: [
                    { $eq: ["$$this._id", "$$l.language_id"] },
                    "$$this.name",
                    "$$value"
                  ]
                }
              }
            }
          }
        }
      }
    }
  }
])

Sân chơi




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb 3.0 java insertOne

  2. mongodb chọn từ các cơ sở dữ liệu khác nhau

  3. Sự cố khi khởi động MongoDB trên Windows

  4. Mảng lồng nhau của $ fitler sử dụng $ lte $ gte

  5. Số lượng nhóm với MongoDB sử dụng khung tổng hợp