简体   繁体   中英

MongoDB C# Driver multiple field query

Using the MongoDB C# driver How can I include more than one field in the query (Im using vb.net)

I know how to do (for name1=value1 )

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

How can I modify this query so I can make it find all documents where name1=value1 and name2=value2 ?

( Similar to )

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

Use And method - C# example from tutorial :

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

I wanted to search a text in different fields and Full Text Search doesn't work for me even after wasting so much time. so I tried this.

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();

And doesn't always do what you want (as I found was the case when doing a not operation on top of an and). You can also create a new QueryDocument, as shown below. This is exactly the equivalent of what you were looking for.

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

You can use:

var arrayFilter = Builders<BsonDocument>.Filter.Eq("student_id", 10000) 
 & Builders<BsonDocument>.Filter.Eq("scores.type", "quiz");

Reference: https://www.mongodb.com/blog/post/quick-start-csharp-and-mongodb--update-operation

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM