पर अद्वितीय सूचकांक मान लीजिए कि मैं एक साधारण स्कीमा करते हैं:नेवला subdocument
var testSchema = new mongoose.Schema({
map: { type: [ mongoose.Schema.Types.Mixed ], default: [] },
...possibly something else
});
अब यह सुनिश्चित करें कि जोड़े (_id
, map._id
) अद्वितीय हैं करते हैं।
testSchema.index({ _id: 1, 'map._id': 1 }, { unique: true });
db.test.getIndexes()
का उपयोग कर त्वरित जांच से पता चलता है कि यह बनाया गया था।
{
"v" : 1,
"unique" : true,
"key" : {
"_id" : 1,
"map._id" : 1
},
"name" : "_id_1_map._id_1",
"ns" : "test.test",
"background" : true,
"safe" : null
}
समस्या यह है, यह सूचकांक नजरअंदाज कर दिया है और मैं आसानी से एक ही map._id
के साथ कई सहायक दस्तावेज़ों बना सकते हैं। मैं आसानी से निम्न क्वेरी कई बार निष्पादित कर सकते हैं:
db.maps.update({ _id: ObjectId("some valid id") }, { $push: { map: { '_id': 'asd' } } });
और निम्नलिखित के साथ अंत:
{
"_id": ObjectId("some valid id"),
"map": [
{
"_id": "asd"
},
{
"_id": "asd"
},
{
"_id": "asd"
}
]
}
क्या यहाँ हो रहा है? मैं विवादित उप-दस्तावेज़ क्यों धक्का दे सकता हूं?
http://stackoverflow.com/questions/13907257/validating-uniqueness-of-an-embedded-document-scoped-by-its-parent-in-mongoose – JohnnyHK
की संभावित डुप्ली कुछ अन्य चीज़ों का उपयोग करना बुरा अभ्यास है '_id' के लिए ऑब्जेक्ट आईडी से। आप ऐसा क्यों करना चाहते हो? –