Quiero consultar mi colección MongoDB sin ningún filtro con MongoDB .NET Driver 2.0 pero no encontré la manera. Tengo la siguiente solución pero se ve raro :D
var filter = Builders<FooBar>.Filter.Exists(x => x.Id); var fooBars = await _fooBarCollection.Find(filter) .Skip(0) .Limit(100) .ToListAsync();¿Hay alguna forma de emitir consultas sin un filtro en MongoDB .NET Driver 2.0?
No puede usar Find sin un filtro.
Sin embargo, puede usar un filtro que pase todo:
var findFluent = await _fooBarCollection.Find(_ => true);O puede usar un documento vacío que es equivalente:
var findFluent = await _fooBarCollection.Find(new BsonDocument());También agregaron un filtro vacío, pero solo estará disponible en las versiones más nuevas del controlador:
var findFluent = await _fooBarCollection.Find(Builders<FooBar>.Filter.Empty);FindAll() es parte del controlador de la serie MongoDB 1x. para obtener la misma funcionalidad en el controlador de la serie 2x, use find() con el documento BSON vacío.
var list = await collection.Find(new BsonDocument()).ToListAsync(); foreach (var dox in list) { Console.WriteLine(dox); }Esto funciona para mi
public class TestProductContext { MongoClient _client; IMongoDatabase _db; public TestProductContext() { _client = new MongoClient("mongodb://localhost:27017"); _db = _client.GetDatabase("EmployeeDB"); } public IMongoCollection<Product> Products => _db.GetCollection<Product>("Products"); } public class DataAccess { private TestProductContext _testProductContext; public DataAccess(TestProductContext testProductContext) { _testProductContext = testProductContext; } public List<Product> GetProducts() { List<Product> pto = new List<Product>(); var cursor = _testProductContext.Products.Find(new BsonDocument()).ToCursor(); foreach (var document in cursor.ToEnumerable()) { pto.Add(document); } } }