This question already has answers here:
Push items into mongo array via mongoose
(5个答案)
2年前关闭。
我正在尝试更新集合中的文档。我特别想更新一个字符串数组。以下是我的模式
我基本上有这样的模式的数组。我想为所有这些对象更新roleTaken数组。
所以我做了以下
我浏览了很多,最受欢迎的解决方案是添加markModified。但这似乎不适用于我的情况。当我添加mongoose.debug时,我得到了以下内容
如您所见,尽管我添加了markmodified和save(),但是所担任的角色是空的。我想知道是否丢失了阻止我将值保存在架构中的内容。
提前致谢。
我只是通过id查找线程,然后使用$ push运算符将注释id推送到我稍后填充的comment属性。
您可以在此处($ v3.4)进一步阅读$ push运算符。https://docs.mongodb.com/manual/reference/operator/update/push/
(5个答案)
2年前关闭。
我正在尝试更新集合中的文档。我特别想更新一个字符串数组。以下是我的模式
var sampleSchema= mongoose.Schema({
fullName : String,
email : String,
rolesTaken : [String],
});
我基本上有这样的模式的数组。我想为所有这些对象更新roleTaken数组。
所以我做了以下
var async = require('async');
var ATmapping = require('path to Schema');
ATmapping.find({},function(err,lists){
if(err){
console.log(err);
return;
}
if(lists.length > 0){
async.each(lists,function(list,callback){
if(!list.rolesTaken){
list.rolesTaken =[];
}
list.rolesTaken.push("Patient");
list.markModified('rolesTaken');
list.save(function(err,item){
if (err){
console.log(err);
}
console.log('Saved', item);
callback();
});
});
}
});
我浏览了很多,最受欢迎的解决方案是添加markModified。但这似乎不适用于我的情况。当我添加mongoose.debug时,我得到了以下内容
atmappings.update({ _id: ObjectId("59074b127adeef0004b84ac3"), __v: 7 }, { '$set': { rolesTaken: [] }, '$inc': { __v: 1 } })
如您所见,尽管我添加了markmodified和save(),但是所担任的角色是空的。我想知道是否丢失了阻止我将值保存在架构中的内容。
提前致谢。
最佳答案
这是我如何使用猫鼬在一个应用程序中的线程上添加评论的方法。
Thread.findByIdAndUpdate(body.thread, { $push: { comments: comment.id }})
我只是通过id查找线程,然后使用$ push运算符将注释id推送到我稍后填充的comment属性。
您可以在此处($ v3.4)进一步阅读$ push运算符。https://docs.mongodb.com/manual/reference/operator/update/push/
关于node.js - 使用save()在 Mongoose 模型中将值保存在数组中的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44320848/