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

Mongoose Giá trị duy nhất trong mảng đối tượng lồng nhau

Chỉ mục duy nhất trên một trường mảng thực thi rằng cùng một giá trị không thể xuất hiện trong các mảng của nhiều hơn một tài liệu trong bộ sưu tập, nhưng không ngăn cùng một giá trị xuất hiện nhiều lần trong mảng của một tài liệu. Vì vậy, bạn cần đảm bảo tính duy nhất khi thêm các phần tử vào mảng.

Sử dụng $addToSet toán tử để thêm giá trị vào một mảng chỉ khi giá trị đó chưa có.

Group.updateOne({name: 'admin'}, {$addToSet: {users: userOid}}, ...

Tuy nhiên, nếu users mảng chứa các đối tượng có nhiều thuộc tính và bạn muốn đảm bảo tính duy nhất cho chỉ một trong số chúng (uid trong trường hợp này), thì bạn cần thực hiện một cách tiếp cận khác:

var user = { uid: userOid, ... };
Group.updateOne(
    {name: 'admin', 'users.uid': {$ne: user.uid}}, 
    {$push: {users: user}},
    function(err, numAffected) { ... });

Điều đó làm đủ điều kiện cho $push cập nhật chỉ xảy ra nếu user.uid chưa tồn tại trong uid trường của bất kỳ phần tử nào của users . Vì vậy, nó bắt chước $addToSet hành vi, nhưng chỉ đối với uid .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB / Meteor / Xuất MONGO_URL sang các ứng dụng đã triển khai

  2. MongoDB dropIndex ()

  3. Chỉ định nhiều tiêu chí cho các phần tử mảng

  4. mongo.so:> ký hiệu không xác định:php_json_encode trong Không xác định trên dòng 0. Sau khi cài đặt trình điều khiển mongo cho php

  5. Đặt thời gian chờ Mongo trong Spring Boot