Ошибка совпадения поля mongo _id - программирование
Подтвердить что ты не робот

Ошибка совпадения поля mongo _id

У меня есть коллекция с полем _id как IP с типом String.

Я использую mongoose, но здесь ошибка на консоли:

$db.servers.remove()

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

$db.servers.insert({ "_ id": "1.2.3.5" }) < - Throw dup key: {: null}

4b9b3361

Ответ 1

Вероятно, это потому, что у вас есть индекс, для которого требуется уникальное значение для одного из полей, как показано ниже:

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

Ответ 2

Я был смущен точно такой же ошибкой сегодня, и позже понял это. Это произошло потому, что я удалил индексированное свойство из схемы mongoose, но не потерял это свойство из индекса mongodb. Сообщение об ошибке сообщает, что новый документ имеет индексированное свойство, значение которого равно null (не в json).