【发布时间】:2016-07-22 22:47:37
【问题描述】:
我是来自 java 经验的 node.js 新手。我有一种情况,我正试图解决这个问题。我的堆栈是 express.js、mongoose、ejs 模板。这是我的场景: 我有一个架构:
var UserSchema = mongoose.Schema({
name: {
type: String,
index: true
},
password: {
type: String,
select: false
},
email: {
type: String
},
academic: [{
qualification: String,
institute: String,
from: String,
to: String,
about: String
}]
});
有一份学者名单。我只想更新该列表中的一个学术对象。我该怎么办?
router.post('/academic/schools/update', function (req, res) {
});
我将 ejs 模板中的值传递到路由中并获取 req.body 中的值。我将如何在节点和猫鼬中查询路由中的特定对象,然后更新其值。我考虑过向学术对象添加一个 ID,以便能够跟踪要更新的对象。
【问题讨论】:
-
Mongoose 应该自动为 Academics 数组中的每个对象添加一个 _id 字段,因为它将它们视为“子文档”。您可以使用 { 'academics._id': _id } 等在 Academics 数组中查询,然后您可以使用位置运算符 { $set: { 'academics.$' : yourUpdatedAcademic } } 更新匹配的文档 ... 更多信息docs.mongodb.com/manual/reference/operator/update/positional