MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

सरणी में नेस्टेड दस्तावेज़ में फ़ील्ड के लिए अद्वितीय बाधा कैसे सेट करें?

हाँ। एम्बेडेड दस्तावेज़ों के साथ सरणी फ़ील्ड पर अनन्य अनुक्रमणिका का उपयोग करने के बारे में कृपया निम्नलिखित दो परिदृश्य देखें।

अद्वितीय मल्टीकी इंडेक्स (एक सरणी के भीतर एम्बेड दस्तावेज़ फ़ील्ड पर अनुक्रमणिका):


पहला परिदृश्य:

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 } " . यह व्यवहार नोट के अनुसार अपेक्षित है अद्वितीय बहुकुंजी अनुक्रमणिका



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो एकत्रीकरण/मोंगो एकत्रीकरण के प्रदर्शन के साथ क्या किया जा सकता है

  2. MongoDB संग्रह से दस्तावेज़ों का एक यादृच्छिक नमूना वापस करने के 3 तरीके

  3. मैं Mongodb कनेक्शन के लिए PHP 7 में libmongoc ssl को कैसे सक्षम कर सकता हूं?

  4. कुल और $group क्वेरीज़ का उपयोग करते समय मेमोरी ओवरफ़्लो त्रुटि

  5. उपयोगकर्ता लॉगिन node.js और mongoose के साथ काम नहीं कर रहा है