2015-06-14 16 views
8

Tôi muốn truy vấn bộ sưu tập MongoDB của mình mà không có bất kỳ bộ lọc nào với MongoDB .NET Driver 2.0 nhưng tôi không tìm được cách nào. Tôi có giải pháp sau nhưng có vẻ lạ: DFindAll trong MongoDB .NET Driver 2.0

var filter = Builders<FooBar>.Filter.Exists(x => x.Id); 
var fooBars = await _fooBarCollection.Find(filter) 
    .Skip(0) 
    .Limit(100) 
    .ToListAsync(); 

Có cách nào để đưa ra các truy vấn không có bộ lọc trong MongoDB .NET Driver 2.0 không?

+0

Làm thế nào về việc sử dụng một sản phẩm nào ** tài liệu BSON **. Đó là yêu cầu vỏ cơ bản. –

+0

Bạn có thể chia sẻ một đoạn mã mẫu không? Tôi không biết ý bạn là gì: s – tugberk

+0

Rất nhiều ví dụ xáo trộn xung quanh. Bạn thậm chí đã thử gửi '.Find()' của bạn mà không có một "bộ lọc"? Điều đó có nghĩa là ** tất cả ** đối với hầu hết chúng ta. Nếu không, chỉ: 'new BsonDocument()' –

Trả lời

15

Bạn không thể sử dụng Find mà không có bộ lọc.

Bạn tuy nhiên có thể sử dụng một bộ lọc mà đi tất cả mọi thứ:

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

Hoặc bạn có thể sử dụng một tài liệu trống tương đương với:

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

Họ cũng đã thêm một bộ lọc rỗng nhưng nó sẽ chỉ có sẵn trong các phiên bản mới hơn của trình điều khiển:

var findFluent = await _fooBarCollection.Find(Builders<FooBar>.Filter.Empty); 
+0

@ i3arnon thx! Tôi thích giải pháp lọc trống. – tugberk

+0

@tugberk chắc chắn, mọi lúc ... – i3arnon

1

FindAll() là một phần của Mong oDB 1x trình điều khiển loạt. để có được chức năng tương tự trong việc sử dụng trình điều khiển 2x series find() với tài liệu BSON trống.

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

Reference

0

Nó làm việc cho tôi

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); 
     } 
    } 
} 
Các vấn đề liên quan