0

より多くの更新を連結する方法はありますか? たとえば、同じ要素でより多くの値を変更したいと思います。だからこれを持って...

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

しかし、同時に 3 つの「hasSeen」値も変更したいと思います。出来ますか?1つのクエリで実行できますか? または、2 つのクエリに分割する必要がありますか?

ps: 私はマングースを使っています。

4

1 に答える 1

0

現在、位置演算子 (ここで必要になると思います) は、$incs または$sets のリストを反復処理してそれらのサブドキュメントの値を変更する、一種の条件付き更新を実行できるような方法では機能しません。

おそらくあなたを助けることができるそのようなもののためのJIRAがあります: https://jira.mongodb.org/browse/SERVER-6566?page=com.atlassian.jira.plugin.system.issuetabpanels:changehistory-tabpanelしかし、それは「よくわからない機能」の下にファイルされています。

現時点でこれを分割するのが最善です。

于 2013-08-22T11:11:29.367 に答える