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

时间:2015-07-03 06:49:37

标签: mongodb mongodb-query

我有一个'应用程序'以下列形式收集:

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

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

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

1 个答案:

答案 0 :(得分:1)

您使用"dot notation"来访问“version”下的特定值,但您还必须使用您正在使用的任何语言“构建”对象密钥。

作为JavaScript示例:

var data={"country":"australia.html","countryCode":"AU"}
if (data.country){
       var code = data.countryCode;
       console.log("countryCode:" + code);
        var $select = $("#select").selectize();
        var selectize = $select[0].selectize;
        selectize.setValue(data.country); 
}

这会产生:

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