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

Trường nước ngoài của $ lookup có thể là trường tài liệu lồng nhau?

Không có toán tử vị trí cho $ lookup nhưng bạn có thể sử dụng pipeline tùy chỉnh trong MongoDB 3.6 để xác định tham gia tùy chỉnh điều kiện :

db.history.aggregate([
    {
        $lookup: {
            from: "childsgroup",
            let: { child_id: "$child_id" },
            pipeline: [
                { $match: { $expr: { $in: [ "$$child_id", "$childs.id" ] } } },
                { $unwind: "$childs" },
                { $match: { $expr: { $eq: [ "$childs.id", "$$child_id" ] } } },
                { $replaceRoot: { newRoot: "$childs" } }
            ],
            as: "childInfo"
        }
    }
])

$match được thêm vào để cải thiện hiệu suất:chúng tôi chỉ muốn tìm những tài liệu đó từ childsgroup chứa child_id phù hợp và sau đó chúng tôi có thể so khớp các tài liệu phụ sau $unwind sân khấu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. hệ thống hội thoại mongodb

  2. Cách đếm các mục trong danh sách danh sách

  3. Mongotemplate - Truy vấn ObjectId theo toán tử lớn hơn (gt) hoặc nhỏ hơn (lt)

  4. Rails - Nơi MongoDB (Mongoid) lưu trữ db và nhật ký?

  5. Bạn có thể có quyền cấp bộ sưu tập trong MongoDB không?