E11000 duplicate-key-Fehler index: MongoDb ungewöhnliche Fehler

Habe ich ein einfaches "Benutzer" - Kollektion, die im inneren jetzt habe ich nur 2 Dokumente.

{
    "_id": ObjectId("4ef8e1e41d41c87069000074"),
    "email_id": {
        "0": 109,
        "1": 101,
        "2": 64,
        "3": 97,

{
    "_id": ObjectId("4ef6d2641d41c83bdd000001"),
    "email_id": {
        "0": 109,
        "1": 97,
        "2": 105,
        "3": 108,

nun, wenn ich versuche, einen neuen index erstellen mit {unique: true} auf email_id Feld, mongodb Beschwerden, die mich mit "E11000 duplicate-key-Fehler index: db.- Benutzer.$email_id dup-key: { : 46 }". Ich bekomme die gleichen Fehler, auch nach der Angabe {dropDups: true}, aber ich glaube nicht, das ist hier der Fall, da beide Dokument haben verschiedene E-Mail-id gespeichert ist.

Ich bin nicht sicher, was hier Los ist, alle Hinweise sind sehr willkommen.

Bearbeiten: Vollständige Ansicht der Dokumente:

{
"_id": ObjectId("4ef8e1e41d41c87069000074"),
"email_id": {
 "0": 109,
 "1": 101,
 "2": 64,
 "3": 97,
 "4": 98,
 "5": 104,
 "6": 105,
 "7": 110,
 "8": 97,
 "9": 118,
 "10": 115,
 "11": 105,
 "12": 110,
 "13": 103,
 "14": 104,
 "15": 46,
 "16": 99,
 "17": 111,
 "18": 109
 }
}

und

{
"_id": ObjectId("4ef6d2641d41c83bdd000001"),
"email_id": {
 "0": 109,
 "1": 97,
 "2": 105,
 "3": 108,
 "4": 115,
 "5": 102,
 "6": 111,
 "7": 114,
 "8": 97,
 "9": 98,
 "10": 104,
 "11": 105,
 "12": 110,
 "13": 97,
 "14": 118,
 "15": 64,
 "16": 103,
 "17": 109,
 "18": 97,
 "19": 105,
 "20": 108,
 "21": 46,
 "22": 99,
 "23": 111,
 "24": 109
 }
}

Gibt es ein paar weitere Felder wie "display_name", "registered_since", etc, die ich ausgelassen haben, aus der Anzeige oben (ich glaube nicht, dass Sie eine Rolle in der der Fehler geworfen, wenn Sie noch brauchen, Ihnen kann ich wahrscheinlich fügen Sie die gesamten Unterlagen hier)

Ich bin mit erlang-mongodb-Treiber für die Kommunikation mit meiner mongo-Instanz. Alle Felder, die als gesehen werden können, sind gespeichert als binäre bytes, das ist, warum sehen Sie so komisch email_id im Dokument.

Hinweis: Binär-byte-format ist nicht gezwungen, meinen code logic, ich habe sehr viel passieren string email_id in meinem bson-Dokumenten, aber ich immer am Ende zu sehen, meine Daten als binäre bytes. (Wahrscheinlich, weil, wie erlang mongodb-Treiber geschrieben, dass ich nicht wirklich untersuchen auf diese, da mein find(), find_one() und andere Abfragen nicht wie erwartet funktioniert auch mit Feldern gespeichert als binäre bytes)

Edit: > db.Benutzer.findOne()

{
"_id" : ObjectId("4ef6d2641d41c83bdd000001"),
"email_id" : [
    109,
    97,
    105,
    108,
    115,
    102,
    111,
    114,
    97,
    98,
    104,
    105,
    110,
    97,
    118,
    64,
    103,
    109,
    97,
    105,
    108,
    46,
    99,
    111,
    109
],
"display_name" : [
    65,
    98,
    104,
    105,
    110,
    97,
    118,
    43,
    83,
    105,
    110,
    103,
    104
],
"provider" : [
    106,
    97,
    120,
    108,
    46,
    105,
    109
],
"provider_id" : [ ]
}
  • Zeigen Sie uns voller Dokumente.
  • Warum Ihre E-Mail sieht so komisch aus?
  • überprüfen Sie die anderen Dokumente...
  • Sind die Werte für email_id eigentlich Filialdokumente indiziert durch die string-keys, die ganzen zahlen? Oder sind Sie arrays, und dies ist nur die Darstellung von Ihnen in Ihrer Programmiersprache? Auch, welche Sprache verwenden Sie?
  • Sie benötigen mehr Informationen liefern. Es erscheint die einzureichenden Unterlagen unvollständig sind? Bedeutet "email_id" haben mehr als 3 Elemente? Vielleicht element 46 wird dupliziert, in die beiden Dokumente? Wann/wie werden Sie einen index hinzufügen? Ist diese in einem Skript oder in der mongo-shell? Wie @Sergej Tulentsev sagt, sollten Sie eine vollständige Sicht auf die Dokumente. Und der kleinste Satz von code, den Sie können, das das problem reproduziert.
  • ich habe versucht das erstellen der Indizes einfügen von zwei Dokumente in der Sammlung. Ich habe versucht das erstellen von Indizes mit beiden mongo shell und rockmongo admin-panel mit dem gleichen Fehler. Ich bin nicht sicher, warum wirklich mein email_id in Dokumente zeigen, wie oben beschrieben. Meine bson-Dokument beim einfügen innerhalb der Kollektion ist ebenso einfach wie {email_id, "[email protected]}.
  • Können Sie fügen Sie die Ausgabe von db.users.findOne() aus der mongo-shell? Ich bin mir immer noch nicht sicher, ob Mongo ist die Behandlung diese als arrays oder als Filialdokumente.
  • wie @dcrosta sagt, wie mongoDB ist die Speicherung der E-Mail scheint der Schlüssel zu sein. Wenn die binäre Darstellung als Filialdokumenten, es sind einige der "Schlüssel", die doppelte zwischen den beiden Dokumenten, die Sie anzeigen (obwohl die ' - Taste{:46}' ist nicht sinnvoll.

Schreibe einen Kommentar