$('#container_id').on('ifChecked','.checkbox_class', function (event){
});
错误:E11000重复键错误集合:geoFame.placeFollow index:id dup key:{:ObjectId('5af19959204438676c0d5268')}
索引
db.getCollection('placeFollow').update(
{
"_id":ObjectId("5af19959204438676c0d5268"),
"count":{"$lt":2}
},
{
"$set":{"data":"check"}
},
{"upsert":true})
如果文档不存在,我想保存文档。但上面的查询是试图插入_id,这是在查询查询中给出的,它正在抛出重复键错误。如何在插入文档时排除查找查询?
答案 0 :(得分:0)
核心问题当然是提供_id
,但您还需要实际设置"count"
字段。使用$setOnInsert
可能是您想要的:
db.getCollection('placeFollow').update(
{ "count":{"$lt":2} },
{
"$set":{ "data": "check" },
"$setOnInsert": { "count": 2 }
},
{"upsert":true}
)
因此,您需要使用“默认”或其他预期数据进行此类操作。否则,MongoDB找不到文档,因为该字段不存在,并尝试使用与提供的_id
值相同的插入。
由于您的代码目前不正确,因此您需要首先删除不使用"count"
创建的文档:
db.getCollection('placeFollow').deleteOne(
{ "_id":ObjectId("5af19959204438676c0d5268") }
)
或者设置所有文档的默认值为`count。
但基本上你在使用“upsert”时不能同时使用“主键”和另一个条件,因为如果文档不符合条件,则尝试upsert,当然还有_id
的现有值是独一无二的。