MongoDB C# find.count () меньше, чем find.ToList (). Count () - PullRequest
1 голос
/ 23 апреля 2020

Я знаю, что есть аналогичный вопрос с Javascript, но переиндексация ничего не меняет.

Код:

                var col = db.GetCollection<BsonDocument>(collectionName);

                var entries = col.Find<BsonDocument>( new BsonDocument() );
                if(_logger.IsDebugEnabled)
                    _logger.Debug($"got collection: \'{collectionName}\' with {entries.Count()} Entries.");


                var list = entries.ToList();
                if(_logger.IsDebugEnabled)
                    _logger.Debug($"{collectionName}-List has {list.Count()} Entries");

приносит результат:

2020-04-23 16:07:44,935 [1] DEBUG got collection: 'MyCollection' with 3884 Entries.
2020-04-23 16:07:45,184 [1] DEBUG MyCollection-List has 3890 Entries 

В командной строке MongoDB команда

> db.MyCollection.count();
3884

Кто-нибудь знает, что не так, как написано в начале, я все время пытался переиндексировать коллекцию, но без изменений.

Я использую драйвер c# от nuget с версией: 2.10.3 Версия Сервера - MongoDB 4.0.4

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

count не гарантируется, чтобы быть точным, и не рекомендуется по этой причине. См. документацию .

Используйте count_documents (добавлено в последние версии драйверов) для получения точного подсчета.

0 голосов
/ 24 апреля 2020

Спасибо! Кроме того, в командной строке есть различия между count () и count_documents (), поэтому все ясно. еще раз: спасибо

...