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}}
)