15

使用 MongoDB C# 驱动程序如何在查询中包含多个字段(我使用 vb.net)

我知道该怎么做 (for name1=value1)

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

我怎样才能修改这个查询,所以我可以让它找到所有文档 where name1=value1name2=value2

( 如同 )

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

3 回答 3

8

我想在不同的领域搜索文本,即使浪费了这么多时间,全文搜索也不适合我。所以我尝试了这个。

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();
于 2016-07-05T19:41:01.777 回答
2

并且并不总是做你想做的事情(我发现在 and 之上进行非操作时就是这种情况)。您还可以创建一个新的 QueryDocument,如下所示。这与您正在寻找的完全一样。

 Query.Not(new QueryDocument { 
    { "Results.Instance", instance }, 
    { "Results.User", user.Email } }))
于 2012-10-22T21:11:42.363 回答
2

您可以使用:

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

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

于 2020-07-23T05:57:51.893 回答