2015-06-14 29 views
8

Voglio interrogare la mia collezione MongoDB senza alcun filtro con MongoDB .NET Driver 2.0 ma non ho trovato un modo. Ho la seguente soluzione ma sembra strano: DFindAll in 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'è un modo per eseguire le query senza filtro in MongoDB .NET 2.0 driver?

+0

Come sull'utilizzo di un documento ** ** BSON vuoto. Questo è il requisito di base della shell. –

+0

Puoi condividere uno snippet di esempio? Non so cosa intendi esattamente: s – tugberk

+0

Un sacco di esempi che si mescolano. Hai persino provato a inviare il tuo '.Find()' senza un "filtro"? Ciò significa ** tutto ** per la maggior parte di noi. Altrimenti, semplicemente: 'new BsonDocument()' –

risposta

15

Non è possibile utilizzare Find senza un filtro.

È possibile comunque utilizzare un filtro che passa tutto:

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

Oppure si può utilizzare un documento vuoto che è equivalente:

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

Hanno aggiunto anche un filtro vuoto, ma solo la volontà essere disponibile nelle versioni più recenti del driver:

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

@ i3arnon thx! Mi è piaciuta la soluzione di filtro vuota. – tugberk

+0

@tugberk sicuro, in qualsiasi momento ... – i3arnon

1

FindAll() è la parte di Mong Driver serie ODB 1x. per ottenere la stessa funzionalità nel driver della serie 2x, utilizzare find() con Documento BSON vuoto.

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

Reference

0

funziona per 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); 
     } 
    } 
} 
Problemi correlati