我试图从MongoDB数据库中的数组中删除所有元素,然后插入所有新的数组元素。
我的模特是:
const mongoose = require('mongoose');
var schema = new mongoose.Schema({
email : {
type : String
},
password : {
type : String
},
stocks : {
type : [String]
}
}, {versionKey:false}, {_id: false});
module.exports = final = mongoose.model('users', schema);
我的股票数组将具有一些值。我正在尝试使用以下命令删除这些值: 我在Stack Overflow的某处读到,清空数组可以执行很多操作,但是一组操作是最快的方法。如果您知道其他比这更好的方法,请告诉我。
final
.findOneAndUpdate({email:"abcd@gmail.com"}, {$set:{stocks:[]}})
.then(()=>console.log("Data removed."))
.catch(err=>console.log(err));
一旦数据被删除,这意味着该数组将被清空。然后像这样从本地变量分配整个新数组集:
const newData = {
stocks : ["abcd", "wxyz"]
};
现在我正在尝试使用以下命令将此新数组分配给我的数据库:
final
.findOneAndUpdate({email:"abcd@gmail.com"}, {$set:{stocks:newData.stocks}});
它成功清空了数组,但是当我分配新数组时,它不起作用并显示一个空数组。有人可以帮我吗?
答案 0 :(得分:1)
尝试
final.findOneAndUpdate({email:"abcd@gmail.com"}, {$set:{stocks:newData.stocks}}, {new: true})
.then((doc)=>console.log(doc))
.catch(err=>console.log(err));
如果不使用回调,则不会执行查询。
如果传递了回调,则执行查询,否则返回Query对象。 Mongoose documentation