我能否找出为什么MongoDB查询没有匹配项?

问题描述 投票:0回答:2

我经常使用findOneAndUpdate根据多个条件获取和更新文档,例如:

const { value } = await collection.findOneAndUpdate(
  { _id: "abc", name: "xyz" },
  { $set: { ... } }
);

如果没有与查询匹配的文档,我想知道为什么匹配失败,因此我可以向用户返回有用的错误消息。例如,如果不存在带有_id == "abc"的文档,我想返回诸如“找不到文档”之类的消息。如果它确实存在但具有不同的name,则消息应为“名称不正确”。目前,我只能通过检查返回的value来确定entire查询是否匹配。

我当然可以调用findOne({ _id: "abc" }),检查name是否具有正确的值,然后再调用updateOne,但我更喜欢一个原子操作。

是否可以执行此操作,或者在这种情况下是否必须使用事务?

我经常使用findOneAndUpdate根据多种条件获取和更新文档,例如:const {value} =等待collection.findOneAndUpdate({_id:“ abc”,name:“ xyz”},{$ set:{.. 。...

mongodb node-mongodb-native
2个回答
0
投票

根据实施说明,findOneAndUpdate()返回Collection~findAndModifyCallback,即收集结果回调。此回调内部有两个字段


0
投票

您可以尝试更新操作,并且如果返回的值为null(找不到匹配项),请向应用程序用户发送一条消息。

© www.soinside.com 2019 - 2024. All rights reserved.