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

Sử dụng chức năng Mongoose / MongoDB $ addToSet trên mảng đối tượng

Bạn cần sử dụng $ne nhà điều hành.

var data = { 'kind': 'tortoise', 'hashtag': 'foo' };
Model.update(
    { 'articles.hashtag': { '$ne': 'foo' } }, 
    { '$addToSet': { 'articles': data } }
)

Thao tác này sẽ chỉ cập nhật tài liệu nếu không có tài liệu con nào trong mảng "bài viết" có giá trị của thẻ bắt đầu bằng # bằng "foo".

Như @BlakesSeven đã đề cập trong nhận xét

$addToSet trở nên không liên quan khi bạn đang kiểm tra sự hiện diện của một trong các giá trị, vì vậy đây cũng có thể là $push để rõ ràng mã. Nhưng nguyên tắc là đúng vì $addToSet hoạt động trên toàn bộ đối tượng chứ không chỉ một phần của nó.

Model.update({ 
    { 'articles.hashtag': { '$ne': 'foo' } }, 
    { '$push': {'articles':  data } }
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Đối tượng bộ sưu tập không phải là lỗi có thể gọi được với PyMongo

  2. Sắp xếp phân biệt chữ hoa chữ thường trong MongoDB

  3. MongoError:không kết nối được với máy chủ trong lần kết nối đầu tiên

  4. MongoDB $ max

  5. spring-data-mongo - tham số truy vấn tùy chọn?