2013-06-14 17 views
16

Ho una collezione con il campo _id come un IP con tipo String.mongo _id errore chiave duplicato campo

sto usando mangusta, ma ecco l'errore sulla console:

$ db.servers.remove()

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

$ db.servers.insert ({" _ id ":" 1.2.3.5" }) < - Genera chiave DUP: {: null}

+0

Quale versione stai utilizzando? – WiredPrairie

+0

È anche strano che restituisca "dupkey: {: null}" piuttosto che il valore della chiave che si è tentato di inserire – WiredPrairie

+3

È il messaggio di errore completo? Si dispone di un indice nella raccolta dei server che richiede un valore univoco per ogni documento ...? Se inserisci due "null", otterrai quello con il secondo valore "null" – WiredPrairie

risposta

35

Probabilmente, è perché si avere un indice che richiede un unico il valore per uno dei campi come illustrato di seguito:

> 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 } 

È possibile visualizzare gli indici utilizzando getIndexes() sulla raccolta:

> 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

Questo è stato, grazie. Devo aver rimosso quel campo nel mio schema di mangusta, ma avevo trascurato di abbandonare la collezione – EthernetCable

+0

All'inizio ero sconcertato dall'errore, fino a quando mi sono reso conto che si stava lamentando di 'null'. :) – WiredPrairie

+0

@WiredPRairie great catch !! :) – Tilo

7

sono stato confuso dal esattamente lo stesso errore oggi, e più tardi figurato fuori . È stato perché ho rimosso una proprietà indicizzata da uno schema di mangusta, ma non ho eliminato quella proprietà dall'indice mongodb. Il messaggio di errore è infatti che il nuovo documento ha una proprietà indicizzata il cui valore è null (non nel json).

+1

Significato: accedi al Database Mongo, vai alla raccolta appropriata e rimuovi l'indice da lì – Dani

Problemi correlati