Mongodb,在一个查询中连接更多更新

时间:2013-08-22 11:04:42

标签: mongodb mongoose

有一种方法可以连接更多更新吗? 例如,我想在同一元素中更改更多值。所以有这个......

{
    cc: [
          { user_id: "1", hasSeen:true}
         ,{ user_id: "2", hasSeen:false}
         ,{ user_id: "3", hasSeen:false}

    ]
    ,conversation: [{
        user_id: "1",
        text: "message by 1, to 2and3"
    }]
}

...我想推送一个新的会话对象并更改所有hasSeen值。

为了做第一点,没问题,我只推了一个新的会话对象。它有效......

    ...update(
        { _id : _param.conversation_id }
        ,{ $push:{ conversation:{user_id:"2",text:"message by 2, to 1,3"} }}
    )
    .exec(function(err, numAffected, rawResponse) {
    });

但我想同时更改三个“hasSeen”值。可能吗? 我可以用一个查询来做吗?或者我应该将它分成两个查询?

ps:我用的是猫鼬。

1 个答案:

答案 0 :(得分:0)

目前位置运算符(我认为你在这里需要)不会以这样一种方式工作,你可以进行一种条件更新,你可以迭代$inc或{{1}的列表}更改这些子文档值。

对于这样的事情,有一个JIRA可能对你有所帮助:https://jira.mongodb.org/browse/SERVER-6566?page=com.atlassian.jira.plugin.system.issuetabpanels:changehistory-tabpanel但它是在“我们不确定的功能”下提交的。

最好将此分开。