2013-06-14 5 views
16

मेरे पास _id फ़ील्ड के साथ एक स्ट्रिंग के साथ आईपी के रूप में संग्रह है।mongo _id फ़ील्ड डुप्लिकेट कुंजी त्रुटि

मैं नेवला उपयोग कर रहा हूँ, लेकिन यहाँ कंसोल पर त्रुटि है:

$ db.servers.remove()

$ db.servers.insert ({ "_ id": "1.2 .3.4 "})

$ db.servers.insert ({" _ id ":" 1.2.3.5 "}) < - फेंकता dup कुंजी: {: अशक्त}

+0

आप किस संस्करण का उपयोग कर रहे हैं? – WiredPrairie

+0

यह भी अजीब बात है कि यह उस कुंजी के मूल्य के बजाय "डुप्लिक कुंजी: {: null} 'लौटा रहा है जिसे आपने डालने का प्रयास किया था। – WiredPrairie

+3

क्या यह पूर्ण त्रुटि संदेश है? क्या आपके पास सर्वर संग्रह में एक अनुक्रमणिका है जिसके लिए आवश्यक है प्रत्येक दस्तावेज़ के लिए एक अनूठा मूल्य ...? यदि आप दो "नल" डालते हैं, तो आप इसे दूसरे "शून्य" मान के साथ प्राप्त करेंगे। – WiredPrairie

उत्तर

35

इसी तरह, यह है क्योंकि आप है एक इंडेक्स है जिसके लिए एक अद्वितीय की आवश्यकता है क्षेत्रों में से एक के लिए मूल्य से नीचे दिखाया गया है:

> db.servers.remove() 
> db.servers.ensureIndex({"name": 1}, { unique: 1}) 
> db.servers.insert({"_id": "1.2.3"}) 
> db.servers.insert({"_id": "1.2.4"}) 
E11000 duplicate key error index: test.servers.$name_1 dup key: { : null } 

आप संग्रह पर getIndexes() का उपयोग कर अपने अनुक्रमित देख सकते हैं:

> db.servers.getIndexes() 
[ 
    { 
     "v" : 1, 
     "key" : { 
       "_id" : 1 
     }, 
     "ns" : "test.servers", 
     "name" : "_id_" 
    }, 
    { 
     "v" : 1, 
     "key" : { 
       "name" : 1 
     }, 
     "unique" : true, 
     "ns" : "test.servers", 
     "name" : "name_1" 
    } 
] 
+0

वह था, धन्यवाद। मैंने उस क्षेत्र को अपने मोंगोज़ स्कीमा में हटा दिया होगा, लेकिन संग्रह को छोड़ने के लिए उपेक्षित था। – EthernetCable

+0

सबसे पहले, मैं त्रुटि से परेशान था, जब तक मुझे एहसास हुआ कि यह 'शून्य' के बारे में शिकायत कर रहा था। :) – WiredPrairie

+0

@WiredPRairie महान पकड़ !! :) – Tilo

7

मैं आज ठीक उसी त्रुटि से उलझन में किया गया था, और बाद में इसे लगा बाहर । ऐसा इसलिए था क्योंकि मैंने एक मोंगोस स्कीमा से अनुक्रमित संपत्ति को हटा दिया, लेकिन उस संपत्ति को मोंगोडब इंडेक्स से नहीं छोड़ा। त्रुटि संदेश वास्तव में है कि नए दस्तावेज़ में एक अनुक्रमित संपत्ति है जिसका मूल्य शून्य है (जेसन में नहीं)।

+1

मतलब: मोंगो डेटाबेस में लॉग इन करें, उचित संग्रह पर जाएं और वहां से इंडेक्स को हटा दें – Dani

संबंधित मुद्दे