Самый простой, безопасный для типа / рефактора вариант - использовать LINQ
* с AsQueryable
:
var collection = database.GetCollection<ApplicationViewModel>("Applications");
var exists = collection.AsQueryable().Any(avm => avm.Name == applicationName);
Это создаст команду подсчета и проверит, что она выше нуля.
В некоторых случаях (где производительность является проблемой) вместо подсчета всех соответствующих документов вы можете просто указать MongoDB
, чтобы получить первый и проверить, есть ли один:
var collection = database.GetCollection<ApplicationViewModel>("Applications");
var exists = collection.AsQueryable().FirstOrDefault(avm => avm.Name == applicationName) != null;
Как указал Роберт Стам, MongoCollection.Exists
и Query.Exists
в данном случае не имеют значения.
* Начиная с версии 1.4 (2012-03-27) драйвер поддерживает запросы LINQ
(переведенные в монго-запросы, поэтому проблем с памятью нет).