sql >> Databasteknik >  >> NoSQL >> MongoDB

$lookup när foreignField är i kapslad array

Jag är inte säker på att jag förstår din fråga helt men det här borde hjälpa dig:

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

Om du bara vill få alla book_name För varje elev kan du göra detta:

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. "Fält krävde en böna av typ som inte kunde hittas." fel fjäder vilsamt API med mongodb

  2. ember js association access backend nodejs mongoose

  3. När ska Redis? När ska man MongoDB?

  4. MongoDb:aggregering $lookup med filtrering över de utländska dokumenten