Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.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 Upsert未更新现有文档_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript Upsert未更新现有文档

Javascript Upsert未更新现有文档,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,如果新文档不存在,Mongo将创建一个新文档(必须具有id1)。如果它已经存在,它应该将所有值增加1。但这里的问题是,它每次都会添加另一个文档,而不是更新已经存在的文档 const query = { id: 1, customer: { worth: 0 } }, update = { id: 1, $inc: { 'customer.worth': 1

如果新文档不存在,Mongo将创建一个新文档(必须具有
id
1)。如果它已经存在,它应该将所有值增加1。但这里的问题是,它每次都会添加另一个文档,而不是更新已经存在的文档

const query = {
        id: 1,
        customer: {
            worth: 0
        }
    },
    update = { id: 1, $inc: 
        { 
            'customer.worth': 1
        } 
    },
    options = { upsert: true };

Model.findOneAndUpdate(query, update, options)
    .catch(err => console.log(err));

如果文档已经存在,我如何增加值1,而不是每次添加另一个文档?在任何给定的时间我只想要一个文档。

您的查询似乎正常,并且在更新期间由于
向上插入
标志而插入

可选。如果设置为true,则在没有文档时创建新文档 匹配查询条件。默认值为false,这不正确 未找到匹配项时插入新文档

以下查询对我有效

db.getCollection('test').findOneAndUpdate({
        "id" : 1,
        "customer" : {
            "worth" : 0
          }  
        }, {
          $inc: {
            'customer.worth': 1
          }
        })
    

您的查询似乎正常,并在更新期间由
upsert
标志导致插入

可选。如果设置为true,则在没有文档时创建新文档 匹配查询条件。默认值为false,这不正确 未找到匹配项时插入新文档

以下查询对我有效

db.getCollection('test').findOneAndUpdate({
        "id" : 1,
        "customer" : {
            "worth" : 0
          }  
        }, {
          $inc: {
            'customer.worth': 1
          }
        })