Javascript mongodb中id的重复密钥
此代码不起作用,我得到了错误的Javascript mongodb中id的重复密钥,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,此代码不起作用,我得到了错误的E11000重复键错误索引错误 Student.update({_id: id, 'data.date':date}, {'$set': {'data.score': 50}}, {upsert: true}, function(err,result) { res.json(1); }); 我不知道如何解决它,当我能做的时候 Student.findOne({_id: id}, function(err,result){
E11000重复键错误索引错误
Student.update({_id: id, 'data.date':date}, {'$set': {'data.score': 50}}, {upsert: true},
function(err,result) {
res.json(1);
});
我不知道如何解决它,当我能做的时候
Student.findOne({_id: id}, function(err,result){
res.json(result)
})
有什么线索吗?我发现两个可能的问题:
data.score
是唯一的,则不能有两个具有相同值的文档,可能其他文档的值已经为50{u id:id,'data.date':date}
的搜索没有返回结果,但不是因为您没有具有该id的文档,而是因为它没有您搜索的“data.date”字段。然后,upsert尝试插入一个新文档(因为搜索没有找到任何同时具有“\u id”等于id
和“data.date”等于date
)的文档),但它无法插入(因为您已经有一个“\u id”等于id
的文档)如果您使用的是
upsert
,则解决方案是仅通过\u id
进行搜索。我发现两个可能的问题:
data.score
是唯一的,则不能有两个具有相同值的文档,可能其他文档的值已经为50{u id:id,'data.date':date}
的搜索没有返回结果,但不是因为您没有具有该id的文档,而是因为它没有您搜索的“data.date”字段。然后,upsert尝试插入一个新文档(因为搜索没有找到任何同时具有“\u id”等于id
和“data.date”等于date
)的文档),但它无法插入(因为您已经有一个“\u id”等于id
的文档)upsert
,那么解决方案是只通过\u id
进行搜索。下面有什么帮助吗?如果是这样的话,你可以考虑一下。下面有没有帮助你?如果是这样的话,你可以考虑。