हाँ। एम्बेडेड दस्तावेज़ों के साथ सरणी फ़ील्ड पर अनन्य अनुक्रमणिका का उपयोग करने के बारे में कृपया निम्नलिखित दो परिदृश्य देखें।
अद्वितीय मल्टीकी इंडेक्स (एक सरणी के भीतर एम्बेड दस्तावेज़ फ़ील्ड पर अनुक्रमणिका):
पहला परिदृश्य:
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"} ] } )
तीनों दस्तावेज़ बिना किसी त्रुटि के सम्मिलित हो जाते हैं।
अद्वितीय बहुकुंजी अनुक्रमणिका . पर नोट के अनुसार , ऊपर, _id : 3
. वाला दस्तावेज़ सरणी के भीतर एक ही "array.id"
. के साथ दो एम्बेडेड दस्तावेज़ हैं मान:3
।
साथ ही, यौगिक सूचकांक की दो कुंजियों पर विशिष्टता लागू की जाती है { _id: 1, "array.id": 1}
और डुप्लिकेट थे "array.id"
दस्तावेज़ों में भी मान ( _id
मान 1
और 2
)।
दूसरा परिदृश्य:
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" } ] } )
_id : 3
. वाला पहला दस्तावेज़ सफलतापूर्वक डाला जाता है। दूसरे में एक त्रुटि है:"errmsg" : "E11000 duplicate key error collection: test.arrays2 index: array.id_1 dup key: { array.id: 3.0 } "
. यह व्यवहार नोट के अनुसार अपेक्षित है अद्वितीय बहुकुंजी अनुक्रमणिका ।