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

Làm thế nào để tra cứu một trường với một mảng trong mongodb tài liệu con lồng nhau?

Bạn có thể sử dụng đường dẫn tra cứu để xử lý tra cứu lồng nhau

const pipeline = [
   {
     $match: {_id: new mongoose.Types.ObjectId(req.user.userId)}
   },
   {
     $lookup: {
       from: 'levels',
       let: { level_id: "$teamInfo.challenges.levelId" },
       pipeline: [
         {
           $match: {
             $expr: {
               $eq: ["$_id", "$$level_id"]
             }
           }
         },
         {
           $lookup: {
             from: '<level collection>',
             localField: "levelId",
             foreignField: "_id",
             as: "levelInfo"
           }
         },
         {
           $project: {
             levelInfo: {
               name: "$levelInfo.name"
             }
             title: 1
           }
         }
       ],
       as: "challenges"
     },

   },
   { $project: {
     _id: 1,
     fullname: 1,
     username: 1,
     teamInfo: {
       challenges: "$challenges"
     }
   }}
]

const result = await User.Aggregate(pipeline)

hy vọng điều này giúp đỡ!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Laravel 5 Tổng số cột được nhân cho mongo DB

  2. mongorestore không có ngoại lệ:lỗi cú pháp

  3. Làm thế nào để giải quyết vấn đề liên quan đến mongoDB một cách hiệu quả?

  4. tiếp tục trong cursor.forEach ()

  5. Xử lý ISODate của MongoDB () khi cố gắng phân tích cú pháp một chuỗi JSON được tuần tự hóa