gpt4 book ai didi

javascript - mongodb 中 id 的重复键

转载 作者:行者123 更新时间:2023-12-02 13:45:55 24 4
gpt4 key购买 nike

此代码不起作用,我收到错误 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)
})

知道发生了什么吗?

最佳答案

我发现两个可能的问题:

  1. 您可能已将某些字段设置为唯一,并且 Mongo 为该字段创建了索引。例如,如果 data.score 是唯一的,那么您就不可能有两个具有相同值的文档,并且可能其他文档的值已经为 50。

解决方案是搜索索引并删除不需要的索引。

  • 也许您搜索 {_id: id, 'data.date': date} 没有返回结果,并不是因为您没有具有该 id 的文档,而是因为它没有您搜索的“data.date”字段。然后 upsert 尝试插入一个新文档(因为搜索没有找到任何 '_id' 等于 id 且 'data.date' 等于 date 的内容)但它失败了(因为您已经有一个 '_id' 等于 id 的文档)。
  • 如果您使用 upsert,解决方案是仅按 _id 进行搜索。

    关于javascript - mongodb 中 id 的重复键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41400195/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com