如何在mongodb的此用户集中更新此特定数据? [英] How to update this specific data in this user collection in mongodb?

查看:58
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆