Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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
如何在数组中递增MongoDB文档对象字段_Mongodb_Nosql - Fatal编程技术网

如何在数组中递增MongoDB文档对象字段

如何在数组中递增MongoDB文档对象字段,mongodb,nosql,Mongodb,Nosql,这是我的文件格式: 在versions字段中,我存储像{v:'2.5',count:5}这样的对象,其中count保存版本的使用次数 做以下事情最简单的方法是什么 如果versions数组中不存在新对象,请在该数组中插入新对象 Ff在版本数组中存在特定版本,然后增加其计数 最简单的方法应该是 db.collection.update({versions.v:'some_version'},{"$inc":{"versions.$.count":1}}); 如果存在版本,这将增加您的计数,但正

这是我的文件格式:

versions
字段中,我存储像
{v:'2.5',count:5}
这样的对象,其中
count
保存版本的使用次数

做以下事情最简单的方法是什么

  • 如果
    versions
    数组中不存在新对象,请在该数组中插入新对象
  • Ff在
    版本
    数组中存在特定版本,然后增加其
    计数

  • 最简单的方法应该是

    db.collection.update({versions.v:'some_version'},{"$inc":{"versions.$.count":1}});
    
    如果存在版本,这将增加您的计数,但正如MongoDB文档所述,
    $
    运算符不能与upsert混合使用,因此如果
    {versions.v:'some_version}
    失败,上述查询将不会导致insert

    位置运算符不能与upsert组合,因为它 需要匹配的数组元素。如果您的更新导致插入 然后“$”将字面上用作字段名

    以下是用美元支持upsert的JIRA门票。你可以投票观看这些问题

    db.collection.update({versions.v:'some_version'},{"$inc":{"versions.$.count":1}});