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

Tra cứu tổng hợp Mongodb với các điều kiện

Trước hết, nó là all_category_id , không phải category_id . Thứ hai, bạn không liên kết các bài báo - tất cả các tài liệu sẽ có cùng một article_category mảng. Cuối cùng, bạn có thể muốn lọc ra các bài viết không có danh mục phù hợp. Đường dẫn có điều kiện sẽ trông giống như sau:

db.article.aggregate([
  { $match: {
      title: { $regex: /example/ }
  } },
  { $lookup: {
    from: "article_category",
    let: {
      article_id: "$article_id"
    },
    pipeline: [
      { $match: {
          $expr: { $and: [
              { $in: [ 8, "$all_category_id" ] },
              { $eq: [ "$article_id", "$$article_id" ] }
          ] }
      } }
    ],
    as: "article_category"
  } },
  { $match: {
    $expr: { $gt: [
      { $size: "$article_category"},
      0
    ] }
  } }
] )

CẬP NHẬT:

Nếu bạn không khớp với article_id , $lookup sẽ dẫn đến article_category giống hệt nhau mảng cho tất cả các bài báo.

Giả sử article_category của bạn bộ sưu tập có một tài liệu khác:

{
  "article_id": 0,
  "all_category_id": [5,8,10]
}

Với { $eq: [ "$article_id", "$$article_id" ] } trong đường dẫn kết quả article_category

[ 
  { 
    "article_id" : 2015110920343902, 
    "all_category_id" : [ 5, 8, 10 ] 
  } 
]

không có:

[ 
  { 
    "article_id" : 2015110920343902, 
    "all_category_id" : [ 5, 8, 10 ] 
  },
  {
    "article_id": 0,
    "all_category_id": [ 5, 8, 10 ]
  }
]

Nếu sau này là những gì bạn cần, sẽ đơn giản hơn để tìm kiếm các yêu cầu:

db.article.find({ title: { $regex: /example/ } })

db.article_category.find({ all_category_id: 8 })


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để bạn đổi tên cơ sở dữ liệu MongoDB?

  2. Thiết lập môi trường MongoDB | Cài đặt MongoDB trên Windows

  3. Mongoose hết hạn tài sản không hoạt động bình thường

  4. Làm cách nào để ghi lại các truy vấn của tôi trong MongoDB C # Driver 2.0?

  5. Meteor:tải tệp từ máy khách lên bộ sưu tập Mongo so với hệ thống tệp và GridFS