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

truy vấn tài liệu phụ thuộc vào giá trị của các tài liệu khác trong mongodb

Hãy thử không tương quan truy vấn phụ từ 3.6 cho trường hợp sử dụng của bạn.

Một cái gì đó giống như

User.aggregate(
 [{$lookup:{
   from: "users",
   pipeline:[
    {$match: {_id:mongoose.Types.ObjectId(id)}},
    {$project: {_id:0,blockedIds:1}}
   ],
   as: "noncr"
 }},
 {$match:{
   $expr:{
     $not:[
      {$in:[
        $_id,
        {$arrayElemAt:["$noncr.blockedIds",0]}
      ]}
    ]
  }
}},
{$project:{noncr:0}}]
)

$lookup để lấy "BlockIds" cho id đầu vào, theo sau là $match để lọc các tài liệu mà "_id" không có trong danh sách Id bị chặn.

$expr cho phép sử dụng các toán tử so sánh tổng hợp trong giai đoạn $ so khớp.

$arrayElemAt để tìm nạp phần tử đầu tiên từ mảng $ lookup.

$in để so sánh _id với các id bị chặn.

$project với loại trừ để xóa trường "noncr" khỏi phản hồi cuối cùng.

Vui lòng lưu ý khi bạn kiểm tra truy vấn, hãy sử dụng tên bộ sưu tập không phải tên mô hình hoặc tên giản đồ trong thuộc tính "from" của giai đoạn tra cứu.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tính số lượng các đối tượng lồng nhau với C #

  2. Truy vấn phạm vi ngày không thành công cho cơ sở dữ liệu MongoDB của các tweet

  3. mongoexport lỗi phân tích cú pháp JSON

  4. Làm cách nào để tạo chỉ mục với pymongo

  5. mongodb:Cấu trúc lập chỉ mục đa khóa?