FindAll in MongoDB .NET Driver 2.0

前端 未结 3 663
既然无缘
既然无缘 2021-02-19 07:50

I want to query my MongoDB collection without any filter with MongoDB .NET Driver 2.0 but I didn\'t find a way. I have the following workaround but it looks weird :D

<         


        
相关标签:
3条回答
  • 2021-02-19 08:31

    You can't use Find without a filter.

    You can however use a filter that passes everything:

    var findFluent = await _fooBarCollection.Find(_ => true);
    

    Or you can use an empty document which is equivalent:

    var findFluent = await _fooBarCollection.Find(new BsonDocument());
    

    They have also added an empty filter but it will only be available in newer versions of the driver:

    var findFluent = await _fooBarCollection.Find(Builders<FooBar>.Filter.Empty);
    
    0 讨论(0)
  • 2021-02-19 08:41

    FindAll() is the part of MongoDB 1x series driver. to get the same functionality in 2x series driver use find() with empty BSON Document.

    var list = await collection.Find(new BsonDocument()).ToListAsync();
    foreach (var dox in list)
    {
        Console.WriteLine(dox);
    }
    

    Reference

    0 讨论(0)
  • 2021-02-19 08:45

    It works for me

    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);
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题