c#MongoDB驱动程序:FindOneAndUpdate如何知道它是否找到了文件?

因此,如果对象存在,我正在使用MongoDB驱动程序更新数据库中的对象字段值。

IMongoDatabase db = _mongoClient.GetDatabase(DataBase); IMongoCollection collection = db.GetCollection(str_collection); collection.FindOneAndUpdate( e => e._id == eventoId && e._visitantes.Any(v => v._empresa == empresa && v._nombre == nombre && v._apellidos == apellidos), Builders.Update.Set(e => e._visitantes[-1]._asistido, true)); 

我的问题是:我怎么知道对象在数据库中找到了? 我看过文档,但没有找到任何内容。

如果它不存在,我不想创建一个新对象,只是我想知道一个对象是否已发现更改该值。

谢谢。

FindOneAndUpdate将返回文档(您可以使用FindOneAndUpdateOptions配置它是旧版本还是更新版本)。

如果在数据库中找不到文档,则返回的文档应该为null ,因此您只需使用简单的null检查。

选项”部分中的mongoose 文档说明:

选项:

  • upsert:bool – 如果对象不存在则创建它。 默认为false。

应该有一个upsert参数,如果设置为true,将创建一个新对象(如果没有找到)。 但是,默认为false,因此您的调用不应创建新的数据库条目。

我认为C# driver行为应该相同。 如果没有,您可以将Upsert参数设置为false,请参见此处