我有一个集合,其中的_id字段是一个带有类型字符串的IP。
我正在使用Mongoose,但控制台上的错误是:
$db.servers.remove()。
$db.servers.insert(“_id”:“1.2.3.4”)
$db.servers.insert(“_id”:“1.2.3.5”)

最佳答案

很可能,这是因为您有一个索引,它需要一个唯一的字段值,如下所示:

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

关于mongodb - mongo _id字段重复键错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17114851/

10-10 00:40