private BsonDocument GetCollectionInfo(IReadBinding binding, string collectionName)
        {
            var commandOperation = new ReadCommandOperation <BsonDocument>(
                _collectionNamespace.DatabaseNamespace,
                new BsonDocument("listCollections", 1),
                BsonDocumentSerializer.Instance,
                new MessageEncoderSettings());
            var commandResult = commandOperation.Execute(binding, CancellationToken.None);

            return(commandResult["cursor"]["firstBatch"].AsBsonArray.Where(c => c["name"] == _collectionNamespace.CollectionName).Single().AsBsonDocument);
        }
        private BsonDocument GetCollectionStats(IReadBinding binding, bool async)
        {
            var command = new BsonDocument
            {
                { "collStats", _collectionNamespace.CollectionName }
            };
            var operation = new ReadCommandOperation <BsonDocument>(_collectionNamespace.DatabaseNamespace, command, BsonDocumentSerializer.Instance, _messageEncoderSettings);

            if (async)
            {
                return(operation.ExecuteAsync(binding, CancellationToken.None).GetAwaiter().GetResult());
            }
            else
            {
                return(operation.Execute(binding, CancellationToken.None));
            }
        }