我正在尝试使用Mongoose 3.10.8
更新集合let findQuery = {username: data.username};
let updateQuery ={
"$addToSet":{
"schemes":{
"$each":[data.schemes]
}
}
};
return new Promise((resolve, reject) => {
this.modelInstance.update(findQuery, updateQuery).exec((err, result) => {
if(err) {
console.log(err);
} else {
resolve(result);
}
})
})
但我的代码会触发以下错误:
{MongoError:'$ set'为空。您必须指定如下字段:{$ set:{:...}}
如果我使用mongoose.set('debug',true)
启用调试模式,我会发现查询中有一个空的$set
。
Mongoose: studentnotifications.update(
{ username: 'username1' },
{
'$set': {},
'$setOnInsert': {
created_at: new Date("Fri, 15 Sep 2017 12:51:36 GMT")
}, '$addToSet': {
schemes: {
'$each': [ { schemeName: 'scheme1' } ]
}
}
},
{ overwrite: undefined }
)
然后我应该禁用set?
答案 0 :(得分:0)
好的,阅读以下文件后
https://github.com/Automattic/mongoose/wiki/3.8-Release-Notes#modelupdate-now-supports-overwrite
我必须设置一个选项{overwrite:true}
但是如何禁用updatedAt:new Date(“星期五,2017年9月15日13:02:28 GMT”),created_at:new Date(“Fri,2017年9月15日13:02:28 GMT”)< / p>
因为我收到了错误
{ MongoError: The dollar ($) prefixed field '$addToSet' in '$addToSet' is not valid for storage.
如果我删除updatedAt字段,则在命令提示符
中运行数据时会更新数据