这是我的架构:
const userSchema = new Schema({
local: {
email: {type: String, unique: true, lowercase: true, trim: true, required: true},
password: {type: String, required: true},
},
items: [{
siteName: {type: String, trim: true},
link: {type: String, trim: true},
color: {type: String, trim: true},
createdAt: {type: Date, default: Date.now, select: false}
}]
});
我有下面的查询,它根据URL中提供的ID更新项目,然后我设置new:true
,它返回整个items
对象数组,但我需要它只返回我在这个数组中更新的单个对象。
User.findOneAndUpdate({"_id": req.user.id, "items._id": req.params.id}, {$set: {
'items.$.siteName': req.body.siteName,
'items.$.link': req.body.link,
'items.$.color': req.body.color
}}, {new: true}, (err, user) => { ... }
所以我的问题是如何仅在items
数组中接收更新的对象而不是其所有内容?