使用MongoDB和Mongoose更新子数组属性
我是Mongoose和MongoDB的新手,我试图更新以下模型的值:
var userSchema = mongoose.Schema({ username : String, playlist : [{ name : String, active : {type: Boolean, default: false}, }] });
我想要做的是将一个用户的所有播放列表设置为false,然后只设置一个为true。 并通过执行以下请求,恰好清除我的播放列表中的信息:
this.model('User').findByIdAndUpdate(userId, {$set:{playlist:{active:false}}}) .exec( function(err, user){ //DO callback treatment here });
我看到一些人说,一旦他们找回了用户,他们不得不对这个子arrays做一个foreach,但是没有办法直接用mongoose和蒙哥巴来做这样的处理吗?
感谢您的回答 !
尝试这个:
{$set: {'playlist.$.active': false}
在这里阅读
如果你这样做:
{$set:{playlist:{active:false}}}
然后,当您$set
playlist
参数时,您将replace整个 playlist
数组。 您应该可以执行以下操作,只需在playlist
添加一个额外的字段即可:
{$set:{"playlist.active": false}}
在这里,您不是在修改playlist
参数,而只是指示MongoDB对playlist
的active
字段进行操作。