2016-06-01 9 views
1

そうように私は、基本的な文書を持っている:コレクションのサブ文書を見つけてMongoose/MongoDBで更新するには?

_id: fm393nrr, 
name: 'My Event' 
members: [{ 
    user: 94iru134nf 
    attending: 1 
}, { 
    user: er9fr94, 
    attending: 0 
}] 

がどのように私は彼らのuserに基づいてメンバーattendingを変更するのでしょうか?

例えば、のようなもの:

上記で
var eventToFind = 'fm393nrr'; //usually retrieved by req.params 
var userToFind = 'er9fr94'; //usually retrieved by req.body.user 

Event.findOneAndUpdate({ 
     _id: eventToFind 
    }, { 
     $set: {members.attending: {.....}} 
    } 
).exec(function(){....}); 

は、私がattending 1のコードを持っているer9fr94のメンバーを設定しようとしていますことは非常にオフですが、ロングショットの試みでした。前にサブ文書/組み込み文書で作業したことはありません。

答えて

1

ネストされたオブジェクトを扱うときに二重引用符を追加します。 $は一致の配列インデックスと等しくなります。だから私は単純に `$セットするだろう

Event.findOneAndUpdate({ 
    _id: eventToFind, 
    "members.user":userToFind, 
}, { 
    $set: {"members.$.attending": {.....}} 
}) 
+0

はこれを試してみてください{ "メンバーを$出席。":1}' '自分attending'を変更するには? – Fizzix

+0

はい。 'userToFind'と一致する' members'の出席を変更するには – RainingChain

+0

おそらく '{upsert:true、new:true}'を追加するあなたが問題を抱えているなら –

関連する問題