我有一个带有_id字段的集合作为类型为String的IP.
我正在使用mongoose,但这是控制台上的错误:
$ db.servers.remove()
$ db.servers.insert({"_ id":"1.2.3.4"})
$ db.servers.insert({"_ id":"1.2.3.5"})< - 抛出dup key:{:null}
Wir*_*rie 35
可能,这是因为您有一个索引需要其中一个字段的唯一值,如下所示:
> 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 }
Run Code Online (Sandbox Code Playgroud)
您可以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"
}
]
Run Code Online (Sandbox Code Playgroud)
我今天对完全相同的错误感到困惑,后来想通了.这是因为我从mongoose模式中删除了一个索引属性,但没有从mongodb索引中删除该属性.错误消息实际上是新文档具有索引属性,其值为null(不在json中).
| 归档时间: |
|
| 查看次数: |
34707 次 |
| 最近记录: |