我是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
});
我见过一些人说,一旦他们找回了用户,他们就不得不对子阵列进行预测,但是没有办法直接使用mongoose和mongodb进行这样的处理吗?
感谢您的回答!
答案 0 :(得分:2)
如果你这样做:
{$set:{playlist:{active:false}}}
然后,您将playlist
$set
参数替换为整个 playlist
数组。您应该能够执行以下操作,只需向playlist
添加一个额外字段:
{$set:{"playlist.active": false}}
此处您没有修改playlist
参数,而只是指示MongoDB对active
中的playlist
字段执行某些操作。
答案 1 :(得分:1)