如何编写这个 MongoDb 更新运算符

How to write this MongoDb update operator

我有一个 'applications' 集合,格式如下:

{ 
  "_id" : "<id>", 
  "versions" : {
      "2_2_1" : 5, 
      "2_2_2" : 38, 
      "2_2_3" : 76
  }
}

我想根据发送请求的应用程序版本增加版本号。如何为更新查询编写 $inc 运算符?

我的查询似乎无法正常工作,因为增加的版本号总是因请求而异。我无法让位置 $ 运算符为我的查询正常工作。

您使用 "dot notation" 来访问 "version" 下的特定值,但您还必须 "build" 使用您使用的任何语言的对象键。

作为 JavaScript 示例:

var request = "2_2_1";
var update = { "$inc": { } };

update["$inc"]["versions." + request] = 1;

这产生:

{ "$inc": { "versions.2_2_1": 1 } }

因此您只需执行更新:

db.collection.update({ "_id": id },update);

如果 "request" 版本子键存在,那么它是 "incremented" 之前的值。如果它是 "new" 键,那么初始值将为 1.