Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongodb中id的重复密钥_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

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)
        })

有什么线索吗?

我发现两个可能的问题:

  • 您可能已将某些字段设置为唯一字段,Mongo为该字段创建了索引。例如,如果
    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
    进行搜索。我发现两个可能的问题:

  • 您可能已将某些字段设置为唯一字段,Mongo为该字段创建了索引。例如,如果
    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
    进行搜索。下面有什么帮助吗?如果是这样的话,你可以考虑一下。下面有没有帮助你?如果是这样的话,你可以考虑。