这是我的文档格式:

{
    _id: some id,
    name: 'some name',
    versions: []
}

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

执行以下操作的最简单方法是什么?
  • 如果不存在,则在 versions 数组中插入一个新对象
  • 如果某个特定版本存在于versions数组中,然后递增其count
  • 最佳答案

    最简单的 方式应该是,

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

    如果版本存在,这将增加您的计数,但正如 MongoDB 文档所说,$ 运算符不能与 upsert 混合,因此如果 {versions.v:'some_version'} 失败,上面的查询不会导致插入。



    以下是用于支持 $.upsert 的 JIRA 票证。您可以投票并观看这些问题。

    Upsert with $-positional operator can create bad documents

    Support $ positional operator with an upsert

    关于mongodb - 如何在数组中增加 MongoDB 文档对象字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11184079/

    10-09 15:46