这是我的文档格式:
{
_id: some id,
name: 'some name',
versions: []
}
Run Code Online (Sandbox Code Playgroud)
在该versions字段中,我存储对象{v: '2.5', count: 5},其中count包含使用版本的次数.
执行以下操作的最简单方法是什么?
versions如果数组不存在,则在数组内插入一个新对象versions数组内,则递增它countRav*_*har 10
应该是最简单的方式,
db.collection.update({versions.v:'some_version'},{"$inc":{"versions.$.count":1}});
Run Code Online (Sandbox Code Playgroud)
如果版本存在,这将增加您的计数,但正如MongoDB文档所述,$运算符不能与upsert混合,因此如果{versions.v:'some_version'}失败,上面的查询将不会导致插入.
位置运算符不能与upsert组合,因为它需要匹配的数组元素.如果您的更新导致插入,那么"$"将字面上用作字段名称.
以下是支持upsert with $的JIRA门票.您可以投票并观看这些问题.
使用$ -positional运算符进行Upsert可以创建错误的文档
| 归档时间: |
|
| 查看次数: |
5273 次 |
| 最近记录: |