如何在mongodb的此用户集中更新此特定数据? [英] How to update this specific data in this user collection in mongodb?
本文介绍了如何在mongodb的此用户集中更新此特定数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要更新此用户集中的特定士兵:
I need to do an update to a specific soldier in this user collection:
例如:
user: {
myArmy : {
money : 100,
fans : 100,
mySoldiers : [{
_id : ddd111bbb,
mySkill : 50,
myStamina : 50,
myMoral : 50,
},
{
_id : ddd111dd ,
mySkill : 50,
myStamina : 50,
myMoral : 50,
}],
}
}
我希望在更新查询中执行以下操作:
I want in my update query to do like the following:
conditions = { _id : user._id };
update =
{ 'myArmy.mySoldiers._id' : soldierId},
{
'$set': {
'myArmy.money' : balanceToSet,
'myArmy.fans' : fansToSet,
'myArmy.mySoldiers.$.skill': skillToSet,
'myArmy.mySoldiers.$.stamina': staminaToSet,
'myArmy.mySoldiers.$.moral': moralToSet
}
}
这是最终查询:
User.update(conditions, update, options, function(err){
if (err) deferred.reject;
stream.resume();
});
最后的结果是,如果SolderId为'ddd111bbb':
And the end result if soldierId is 'ddd111bbb':
user: {
myArmy : {
money : 200,
fans : 100,
mySoldiers : [{
_id : ddd111bbb,
mySkill : 150,
myStamina : 250,
myMoral : 50,
},
{
_id : ddd111dd ,
mySkill : 50,
myStamina : 50,
myMoral : 50,
}],
}
}
这些技能,道德和耐力只应在特定士兵上改变. 我如何获取$作为该士兵的索引号,上面的更新查询中缺少什么?
Those skill, moral and stamina should change only on the specific soldier. How do i get the $ to be the index number of this soldier, what is missing from the update query above?
推荐答案
这就是我想要的:
conditions = { _id : user._id , 'myArmy.mySoldiers._id' : soldierId};
update = {
$set: {
'myArmy.balance': balanceToSet,
'myArmy.fans' : fansToSet,
'myArmy.tokens' : tokensToSet,
'myArmy.mySoldiers.$.skill' : skillToSet,
'myArmy.mySoldiers.$.stamina': staminaToSet,
'myArmy.mySoldiers.$.moral' : moralToSet
}
}
这给了我想要的结果,然后我不小心插入了条件查询和更新一个...
This gave me the result i wanted, before i accidentally inserted the condition query with the update one...
这篇关于如何在mongodb的此用户集中更新此特定数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文