sql >> Database >  >> NoSQL >> MongoDB

Hoe zoek je een veld op met een array in een genest subdocument mongodb?

U kunt een opzoekpijplijn gebruiken om geneste zoekopdrachten af ​​te handelen

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)

hoop dat dit helpt!




  1. Mongoose Prive Chat Bericht Model

  2. Prestatie-impact van indexgegevenstype in MongoDB?

  3. gke kan Transparent Huge Pages niet uitschakelen... toestemming geweigerd

  4. Ongeldige ns bij verbinding met mongodb-server