我有一个'应用程序'以下列形式收集:
{
"_id" : "<id>",
"versions" : {
"2_2_1" : 5,
"2_2_2" : 38,
"2_2_3" : 76
}
}
我想根据发送请求的应用程序版本增加版本号。如何为我的更新查询编写$ inc运算符?
我似乎无法使我的查询正常工作,因为递增的版本号总是因请求而异。我无法让位置$运算符正常运行我的查询。
答案 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);
。