Дубликат значения вставлен в поле "_id" mongodb - PullRequest
1 голос
/ 14 марта 2012

В mongodb мы можем присвоить собственное значение полю _id, и значение поля "_id" может быть любого типа, кроме массивов, при условии, что оно уникально - из документов .

Но в моей действующей базе данных я вижу, что некоторые записи были продублированы следующим образом:

db.memberrecords.find().limit(2).forEach(printjson)
{
        "_id" : "999783",
        "Memberid" : "999783",
        "Name" : "ASHEESH SHARMA",
        "Gender" : "M",
}
{
        "_id" : "999783",
        "Memberid" : "999783",
        "Name" : "Sanwal Singh Meena",
        "Gender" : "M",
}

В приведенных выше записях одно и то же значение _id вставлено дважды в таблицу. Когда я тестировал с локальной базой данных, он не позволяет вставлять ту же запись _id и выдавать ошибку следующим образом:

E11000 duplicate key error index: mongoms.memberrecords.$_id_  dup key: { : "999783" }

Ниже приведены индексы для моей действующей таблицы членских записей (для вашей справки),

db.memberrecords.getIndexes()
[
        {
                "name" : "_id_",
                "ns" : "mongoms.memberrecords",
                "key" : {
                        "_id" : 1
                },
                "v" : 0
        },
        {
                "_id" : ObjectId("4f0bcdf2b1513267f4ac227c"),
                "ns" : "mongoms.memberrecords",
                "key" : {
                        "Memberid" : 1
                },
                "name" : "Memberid_1",
                "unique" : true,
                "v" : 0
        }
]

Примечание: у меня есть два шардинга для этой таблицы.

Любые предложения по этому вопросу,

1 Ответ

1 голос
/ 14 марта 2012

Является ли ваш ключ шарда полем _id?В кластере можно использовать только один уникальный индекс: ключ сегмента (в противном случае сервер должен проверять каждый фрагмент в каждой вставке).

Итак: на одном осколке _id будет уникальным.Однако, если это не ваш ключ шарда, все ставки делаются на несколько шардов.

См. http://www.mongodb.org/display/DOCS/Sharding+Limits#ShardingLimits-UniqueIndexesDOCS%3AIndexes%23UniqueIndexes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...