我想要的是:
1
。1
但我似乎无法通过findOneAndUpdate
实现此目的,User.findOneAndUpdate(
{ email: email },
{ $set: { verified: 1 } },
{ upsert: true }
).exec(callback);
仅在文档存在且成功更新时才返回结果。
我的查询:
$this->get($url, $headers);
答案 0 :(得分:1)
您可以访问本机驱动程序来调用基础集合的 updateOne()
或 updateMany()
方法,该方法将返回Mongo的完整响应。 updateWriteOpCallback
回调为您可以使用的 updateWriteOpResult
对象。例如
User.collection.updateOne(
{ "email": email },
{ "$set": { "verified": 1 } },
{ "upsert": true },
function(err, result) {
// The number of documents that matched the filter.
console.log(result.matchedCount);
// The number of documents that were modified.
console.log(result.modifiedCount);
// The number of documents upserted.
console.log(result.upsertedCount);
// The total count of documents scanned.
console.log(result.result.n);
// The total count of documents modified.
console.log(result.result.nModified);
}
);
在这种情况下,您可能需要检查result.result.nModified
和result.upsertedCount
属性才能进行上述调用。
答案 1 :(得分:0)
假设您希望结果是更新的文档,则需要将查询修改为如下所示:
User.findOneAndUpdate(
{ email: email },
{ $set: { verified: 1 } },
{ upsert: true, returnNewDocument: true }
).exec(callback);
returnNewDocument
属性将使回调返回更新的文档而不是原始文档。如果在不存在的文档上进行upsert,它将返回新文档而不是空集。