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

时间:2017-09-14 09:33:24

标签: c# mongodb

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

 IMongoDatabase db = _mongoClient.GetDatabase(DataBase);
 IMongoCollection<Evento> collection = db.GetCollection<Evento>(str_collection);

 collection.FindOneAndUpdate(
     e => e._id == eventoId &&
     e._visitantes.Any(v => v._empresa == empresa &&
         v._nombre == nombre &&
         v._apellidos == apellidos),
     Builders<Evento>.Update.Set(e => e._visitantes[-1]._asistido, true));

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

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

感谢。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

选项部分中的猫鼬documentation状态:

  

选项:

     
      
  • ...
  •   
  • upsert:bool - 创建对象(如果它不存在)。默认为false。
  •   
  • ...
  •   

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

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