我要的是:findOneAndUpdate插入後返回null?
- 回報
1
如果插入成功,即使該文件不存在之前。 - 回報
1
如果更新成功
但我似乎不能findOneAndUpdate
這僅當文檔存在併成功更新返回一個結果來實現這一目標。
我的查詢:
User.findOneAndUpdate(
{ email: email },
{ $set: { verified: 1 } },
{ upsert: true }
).exec(callback);
我要的是:findOneAndUpdate插入後返回null?
1
如果插入成功,即使該文件不存在之前。1
如果更新成功但我似乎不能findOneAndUpdate
這僅當文檔存在併成功更新返回一個結果來實現這一目標。
我的查詢:
User.findOneAndUpdate(
{ email: email },
{ $set: { verified: 1 } },
{ upsert: true }
).exec(callback);
假設你想要得到的結果是更新後的文檔,則需要修改您的查詢,看起來像這樣:
User.findOneAndUpdate(
{ email: email },
{ $set: { verified: 1 } },
{ upsert: true, returnNewDocument: true }
).exec(callback);
的returnNewDocument
屬性將回調返回更新的文件,而不是原件。對於不存在的文檔上的upsert,它將返回新文檔而不是空集。
你可以訪問本地驅動程序來調用底層集合的updateOne()
或updateMany()
方法,它將從蒙戈在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
性質作出上述呼籲。
查看[**'WriteResult' **](https://docs.mongodb.com/manual/reference/method/WriteResult/)文檔。 – chridam