0
は、以下の構造を持つ文書を持って:私はread
要素が0に等しい読んですべての通知としてマークしようとしていますが、何らかの理由で、私のコードは、最初の通知修正マングース:マルチ:投影更新のための真は働かない?
{
_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Story' },
notifications: [{
story: {
_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Story' },
video_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Video' }
},
video: {
_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Video' },
video_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Video' }
},
type: { type: String },
read: { type: Number, default: 0 }, // 0 - Unread, 1 - read
ts: { type: Date, default: Date.now }
}]
}
:
をmongoose.model('User').update({ _id: user_id, 'notifications.read': 0 }, { $set: { 'notifications.$.read': 1 }}, { multi: true });
私は正しくmulti: true
を使用していますか?
UPDATE
私は私が何をしようとしていると言うだろうドキュメントが言うようにするので、placeholderを使用しても意味がありません。
$を。更新のクエリ条件に一致する最初の要素を更新するためのプレースホルダとして機能します。
あなたが '_id:user_id'を削除しても、それは私に最初の通知を更新し続けます – DevStarlight
' multi:true'を使用して 'notifications'サブドキュメントまたはメインドキュメントを更新していますか? –
私は説明で指定したとおり、 'read'属性が0であるすべてのサブ文書を更新しようとしています – DevStarlight