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

Làm cách nào để kiểm tra xem một trường mảng có phải là một phần của một mảng khác trong MongoDB hay không?

Bạn có thể sử dụng khung tổng hợp để làm điều này. Đưa ra dữ liệu sau

> db.post.find()
{ "_id" : 1, "tags" : [ "tag1" ] }
{ "_id" : 2, "tags" : [ "tag1", "tag3" ] }
{ "_id" : 3, "tags" : [ "tag2", "tag4" ] }
{ "_id" : 4, "tags" : [ "tag1", "tag2", "tag3", "tag4" ] }

truy vấn tổng hợp

db.post.aggregate({
  $project: {
    _id: 1,
    tags: 1,
    killFlag: {
      $const: [true, false]
    }
  }
}, {
  $unwind: "$tags"
}, {
  $unwind: "$killFlag"
}, {
  $match: {
    $nor: [{
        tags: {
          $in: ['tag1', 'tag2', 'tag4']
        },
        killFlag: true
      }
    ]
  }
}, {
  $group: {
    _id: "$_id",
    tags: {
      $addToSet: "$tags"
    },
    killFlag: {
      $max: "$killFlag"
    }
  }
}, {
  $match: {
    killFlag: false
  }
}, {
  $project: {
    _id: 1,
    tags: 1
  }
})

sẽ cung cấp cho bạn

{
  "result": [{
      "_id": 3,
      "tags": [
          "tag4",
          "tag2"
      ]
    }, {
      "_id": 1,
      "tags": [
          "tag1"
      ]
    }
  ],
  "ok": 1
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kiểm tra xem mọi phần tử trong mảng có khớp với điều kiện không

  2. MongoDB - Chỉ mục không được sử dụng khi sắp xếp và giới hạn trên truy vấn phạm vi

  3. Dữ liệu mùa xuân mongodb không đóng các kết nối mongodb

  4. Hiểu và quản lý dung lượng đĩa trên máy chủ MongoDB của bạn

  5. Công dụng của Jade hoặc Handlebars khi viết ứng dụng AngularJs