2012-09-23 16 views
10

Mit den MongoDB C# Treiber Wie kann ich mehr als ein Feld in der Abfrage enthalten (Im vb.net verwenden)MongoDB C# Treiber mehrere Feld Abfrage

Ich weiß, wie (für name1=value1) zu tun

Dim qry = Query.EQ("name1","value1") 

Wie kann ich diese Abfrage ändern, damit ich alle Dokumente finden kann, in denen name1=value1 und name2=value2?

(Abbildung ähnlich)

db.collection.find({"name1":"value1","name2":"value2"}) 

Antwort

18

Verwendung And Verfahren - C# Beispiel von tutorial:

MongoCollection<BsonDocument> books; 
var query = Query.And(
    Query.EQ("author", "Kurt Vonnegut"), 
    Query.EQ("title", "Cats Craddle") 
); 
2

Und tun nicht immer das, was Sie wollen (wie ich den Fall gefunden, wenn ein tun nicht Operation oben auf und). Sie können auch ein neues QueryDocument erstellen, wie unten gezeigt. Das ist genau das, wonach Sie gesucht haben.

Query.Not(new QueryDocument { 
    { "Results.Instance", instance }, 
    { "Results.User", user.Email } })) 
0

Ich wollte einen Text in verschiedenen Feldern suchen, und die Volltextsuche funktioniert nicht für mich selbst nach so viel Zeit verschwenden. also habe ich das versucht.

var filter = Builders<Book>.Filter.Or(
    Builders<Book>.Filter.Where(p=>p.Title.ToLower().Contains(queryText.ToLower())), 
    Builders<Book>.Filter.Where(p => p.Publisher.ToLower().Contains(queryText.ToLower())), 
    Builders<Book>.Filter.Where(p => p.Description.ToLower().Contains(queryText.ToLower())) 
      ); 
List<Book> books = Collection.Find(filter).ToList(); 
Verwandte Themen