Mongodb 递增子文档和父文档中的版本号

Mongodb 递增子文档和父文档中的版本号,mongodb,Mongodb,我试图在文档及其子文档中添加版本控制级别。下面是一个模式示例 { "_id" : ObjectId("59d1312a8ee6de1858933950"), "synonyms" : [ { "_id" : ObjectId("59d1312a8ee6de1858933954"), "text" : [ 1.0, 2.0,

我试图在文档及其子文档中添加版本控制级别。下面是一个模式示例

{
    "_id" : ObjectId("59d1312a8ee6de1858933950"),
    "synonyms" : [ 
        {
            "_id" : ObjectId("59d1312a8ee6de1858933954"),
            "text" : [ 
                1.0, 
                2.0, 
                3.0
            ],
            "__v" : 1.0
        }, 
        {
            "_id" : ObjectId("59d1312a8ee6de1858933953"),
            "text" : [ 
                "Foo ", 
                "bar ", 
                "Baz"
            ],
            "__v" : 0
        }, 
        {
            "_id" : ObjectId("59d1312a8ee6de1858933951"),
            "text" : [ 
                "fizz", 
                "bazz", 
                "bizz"
            ],
            "__v" : 0
        }
    ],
    "__v" : 3.0
}
如您所见,父文档有自己的
\uu v
,而每个子文档(同义词数组的一部分)也有自己的
\uu v
。我要做的是

  • 更新子文档数组时-增加子文档及其父版本的版本
为此,我尝试了以下代码

db.collection.update({
    '_id': ObjectId("59d1312a8ee6de1858933950"),
    "synonyms._id": ObjectId("59d1312a8ee6de1858933954")
},
    {$set: {'synonyms.$.text': [1,2,3]}, $inc: {'synonyms.$.__v': 1}, $inc: {"__v": 1}}
)

我的父级
\uu v
每次更新都会增加,但无论我进行了多少次更新,子文档似乎都停留在
1.0
上。有更好的方法吗?

如果您考虑将参数作为JSON文档而不是字符串传递给MongoDB命令,那么这非常有意义:将同一个操作符传递两次(如开始时的
$inc
,然后在示例中再次传递另一个
$inc
)将创建一个只包含最后一个参数的JSON文档。如果您在这里使用一个字符串,它实际上表示一个JSON文档,其中包含两个
$inc
字段,则情况会有所不同

下面是如何正确操作的方法(基本上是将两个字段作为一个操作的一部分进行合并):

db.collection.update({
    '_id': ObjectId("59d1312a8ee6de1858933950"),
    "synonyms._id": ObjectId("59d1312a8ee6de1858933954")
},
    {$set: {'synonyms.$.text': [1,2,3]}, $inc: {'synonyms.$.__v': 1, "__v": 1}}
)