我有这个简化的架构:
DealSchema = new db.Schema({
_id : db.Schema.Types.ObjectId,
message : [{
memberId : db.Schema.Types.ObjectId,
hasRead : Boolean
}]
});
我想根据hasRead
和false
属性更新所有true
属性从memberId
到_id
的文档。所以我执行了这个查询:
var conditions = { _id : dealId, 'message.memberId' : loggedId }
, update = { $set : { 'message.$.hasRead' : true } };
deal.Model
.update(conditions, update, { multi : true }, function(err, result) {
console.log(result); // outputs 1
callback(err, result);
});
查询只能更新它遇到的第一个子文档。我需要做的是更新所有比赛。我很确定它应该影响我的数据库中至少超过1 message.hasRead
的属性。
有什么想法吗? TIA
答案 0 :(得分:1)
$
代表第一个匹配元素的索引。
遗憾的是,您无法使用以下异常/解决办法在单个更新中更新多个数组元素:
$set
中的每个目标元素。message
数组,然后调用deal.save()
。MongoDB对此更新模式没有很好的支持。