var userSchema = mongoose.Schema({
username: { type: String},
email: String,
password: String,
tasks: [String]
});
我需要找到用户文档(使用名称(,然后将一个新任务推送到tasks数组中——如果它在数组中还不存在的话。
我找到了这个解决方案:
user = await User.findOneAndUpdate(
{ username: username, 'tasks': { $ne: task} },
{ $push: { tasks: task } },{ 'upsert': false});
但是我怎么能知道更新没有发生的原因呢?
是因为用户名不存在还是因为任务已经存在?
$push将在任务数组中创建重复项。您需要使用$addToSet运算符:
db.collection.findOneAndUpdate(
{
username: 'test'
},
{
$addToSet: {
tasks: 'task'
}
},
{
returnNewDocument: true
})