我的用户架构如下所示:
var userSchema = mongoose.Schema({
...
ask_history: [
{
user_question_body: {
type: String
},
favorite: {
type: Boolean,
default: false
},
ask_time: {
type: Date,
default: Date.now
}
}
]
})
我目前的更新方法如下:
User.findOneAndUpdate({
"_id": user_id,
ask_history.user_question_body: {
$ne: "an input string"
}
}, {
"$addToSet": {
ask_history: {
user_question_body: "an input string"
}
}
}, function(err, doc) {
if (err)
throw err; // handle error;
}
);
如何添加功能,如果我准备好在ask_history数组中有{user_question_body:“输入字符串”}的记录,则将{ask_time}更新为当前更新时间。
答案 0 :(得分:1)
要更新匹配文档的aks_time
,您应该使用$
(positional operator)
User.findOneAndUpdate({
"_id": user_id,
"ask_history.user_question_body": "an input string"
}, {
"$set": {"ask_history.$.ask_time": new Date()}
},{new:true, upsert: true}, function(err, doc) {
if (err)
throw err; // handle error;
}
console.log(doc)
);