【发布时间】:2014-06-12 15:19:46
【问题描述】:
我正在寻找一种使用猫鼬更新嵌入文档的简单方法,而无需手动设置每个特定字段。查看this question 的已接受答案,一旦您找到要更新的嵌入式文档,您必须实际设置每个相应的属性,然后保存父级。我更愿意做的是传入一个更新对象并让 MongoDB 设置更新。
例如如果我要更新常规(非嵌入式)文档,我会这样做:
models.User.findOneAndUpdate({_id: req.params.userId}, req.body.user, function(err, user) {
err ? resp.status(500).send(err) : user ? resp.send(user) : resp.status(404).send();
});
这里我实际上不必遍历 req.body.user 中的每个属性并设置更改。我也找不到用子文档做这种事情的方法吗?
我的架构如下:
var UserSchema = BaseUserSchema.extend({
isActivated: { type: Boolean, required: true },
files: [FileSchema]
});
var FileSchema = new mongoose.Schema(
name: { type: String, required: true },
size: { type: Number, required: true },
type: { type: String, required: true },
});
我正在尝试根据用户和文件 ID 更新文件。
我是否需要创建一个辅助函数来设置值,或者是否有 MongoDB 方法可以做到这一点?
非常感谢。
【问题讨论】:
标签: javascript node.js mongodb mongoose mongodb-query