MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

$lookup ketika foreignField berada di array bersarang

Saya tidak yakin saya memahami pertanyaan Anda sepenuhnya, tetapi ini akan membantu Anda:

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

Jika Anda hanya ingin mendapatkan semua book_name s untuk setiap siswa Anda dapat melakukan ini:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Agregasi Mongodb berdasarkan hari berdasarkan cap waktu unix

  2. Indeks majemuk Mongodb untuk memfilter dan menyortir koleksi BESAR

  3. Desain Skema database Mongodb dengan data bersama

  4. Apa cara yang benar untuk meminta MongoDB untuk _id menggunakan string dengan menggunakan Python?

  5. Indeks tidak dibuat, indeks teks diperlukan untuk kueri $teks - luwak