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

Cách tra cứu $ bằng cách tránh các giá trị null trong mongodb tổng hợp

Bạn có thể khắc phục điều đó bằng cách không sử dụng $in .

Nó giống như thế này $map được thực thi riêng cho mọi tài liệu trong các mục items thu thập. Nếu bạn chạy bản đồ trong $addFields , bạn có thể sử dụng hình thức tra cứu đơn giản để khớp trường đã thêm vào _id , sẽ tự động xử lý thiếu null và mảng.

Xóa trường đã thêm bằng $project giai đoạn nếu cần thiết.

db.case.aggregate([
    {$lookup: {
        from: "insurance",
        let: { ipids: "$sale.bill.insurancePlanId" },
        pipeline: [
            {$unwind: "$coveragePlans"},
            {$match: { $expr: { $in: ["$coveragePlans._id", "$$ipids"] } }},
            {$project: { _id: 0, name: 1 }}
        ],
        as: "insurances"
    }}
    {$addFields:{
        matchArray:{$map: {
                       input: "$$iid",
                       in: { $toObjectId: "$$this" }
        }}
    }},
    {$lookup: {
        from: "item",
        localField: "matchArray",
        foreignField:"_id",
        as: "items"
    }},
    {$project:{
        arrayField: 0 
    }}
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Typecript:khóa sâu của một đối tượng lồng nhau, với kiểu liên quan

  2. Nội dung được biên dịch trước của Heroku không thành công

  3. Cách tính trường trung bình mỗi ngày bằng MongoDB?

  4. Kho lưu trữ và kế thừa Spring-data mongodb

  5. Điền vào một mô hình mongoose với một trường không phải là id