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

Làm cách nào để đặt ràng buộc duy nhất cho trường trong tài liệu được lồng trong mảng?

Đúng. Vui lòng xem hai trường hợp sau về cách sử dụng chỉ mục duy nhất trên trường mảng có tài liệu nhúng.

Chỉ mục nhiều khóa duy nhất (chỉ mục trên trường tài liệu được nhúng trong một mảng):


Tình huống đầu tiên:

db.arrays.createIndex( { _id: 1, "array.id": 1}, { unique: true } )

db.arrays.insertOne( { "_id": 1, "array": [ { "id": 1, "content": "11"}, { "id": 2, "content": "22"} ] } )

db.arrays.insertOne( { "_id": 2, "array": [ { "id": 1, "content": "1100"}, { "id": 5, "content": "55"} ] } )

db.arrays.insertOne( {"_id": 3, "array": [ {"id": 3, "content": "33"}, {"id": 3, "content": "3300"} ] } )

Tất cả ba tài liệu được chèn mà không có bất kỳ lỗi nào.

Theo ghi chú về Chỉ mục nhiều khóa duy nhất , ở trên, tài liệu có _id : 3 có hai tài liệu được nhúng trong mảng có cùng "array.id" giá trị:3 .

Ngoài ra, tính duy nhất được thực thi trên hai khóa của chỉ mục ghép { _id: 1, "array.id": 1} và có "array.id" trùng lặp cũng có giá trị trên các tài liệu (_id giá trị 12 ).


Tình huống thứ hai:

db.arrays2.createIndex( { "array.id": 1 }, { unique: true } )

db.arrays2.insertOne( { "_id": 3, "array": [ { "id": 3, "content": "33" }, { "id": 3, "content": "330"} ] } )
db.arrays2.insertOne( { "_id": 4, "array": [ { "id": 3, "content": "331" }, { "id": 30, "content": "3300" } ] } )

Tài liệu đầu tiên có _id : 3 được chèn thành công. Cái thứ hai có lỗi:"errmsg" : "E11000 duplicate key error collection: test.arrays2 index: array.id_1 dup key: { array.id: 3.0 } " . Hành vi này diễn ra như mong đợi theo ghi chú Chỉ mục nhiều khóa duy nhất .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. làm thế nào để cập nhật bộ sưu tập Mongo.db trong meteor.js?

  2. Tìm số lượng tất cả các khoảng chồng chéo

  3. Rails g không thành công cho các lệnh mongoid

  4. Làm cách nào để tải 100 triệu bản ghi vào MongoDB với Scala để kiểm tra hiệu suất?

  5. Truy vấn MongoDB đơn giản rất chậm mặc dù chỉ mục được thiết lập