sql >> Database teknologi >  >> NoSQL >> MongoDB

$lookup når fremmedField er i indlejret array

Jeg er ikke sikker på, at jeg helt forstår dit spørgsmål, men dette burde hjælpe dig:

db.student.aggregate([{
    $match: { _id: ObjectId("657...") }
}, {
    $lookup: {
        from: 'library',
        localField: '_id' ,
        foreignField: 'issued_to.student',
        as: 'result'
    }
}])

Hvis du kun ønsker at få alle book_name s for hver elev kan du gøre dette:

db.student.aggregate([{
    $match: { _id: ObjectId("657657657657657657657657") }
}, {
    $lookup: {
        from: 'library',
        let: { 'stu_id': '$_id' },
        pipeline: [{
            $unwind: '$issued_to' // $expr cannot digest arrays so we need to unwind which hurts performance...
        }, {
            $match: { $expr: { $eq: [ '$issued_to.student', '$$stu_id' ] } }
        }, {
            $project: { _id: 0, "book_name": 1 } // only include the book_name field
        }],
        as: 'result'
    }
}])


  1. Kædende løfte om at opdatere et referencedokument i Mongoose

  2. Tomt array forhindrer dokument i at blive vist i forespørgslen

  3. Kopier og omdøb et dokumentfelt i MongoDB

  4. Forespørgsel efter et felt i et objekt i array med Mongo?