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

$ lookup khi ForeignField nằm trong mảng lồng nhau

Tôi không chắc mình hiểu hoàn toàn câu hỏi của bạn nhưng điều này sẽ giúp bạn:

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

Nếu bạn chỉ muốn lấy tất cả book_name đối với mỗi học sinh, bạn có thể làm điều này:

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. Mongoid có tên phạm vi so sánh hai trường thời gian trong cùng một tài liệu

  2. Không thể tìm thấy mô-đun trong Nodejs

  3. MongoDB $ ReplaceAll

  4. Các chỉ mục khác nhau trên các thành viên tập hợp bản sao khác nhau

  5. truy vấn mongodb sử dụng đối tượng _id trong tìm kiếm localField