Чтобы любое из предыдущих предложений было эффективным, вы должны быть уверены, что в элементе url есть индекс.В противном случае потребуется полное сканирование коллекции.
Если вы ожидаете, что ответ будет 0 или 1, подсчет, вероятно, является наиболее эффективным подходом.Если вы считаете, что число будет очень большим, и все, что вас действительно волнует, так это наличие одного или нескольких, FindOne - наиболее эффективный подход.
Вероятно, не имеет значения, что FindOne возвращает весь документ, если толькодокумент на самом деле довольно большой.В этом случае вы можете указать серверу вернуть только одно поле (наиболее вероятным кандидатом является _id):
var query = Query.EQ("url", "http://stackoverflow.com");
var fields = Fields.Include("_id");
var res = collection.Find(query).SetFields(fields).SetLimit(1).FirstOrDefault();
if (res == null) {
// no match found
}