MongoDB C#驱动程序多字段查询

17

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

我知道如何做(对于name1=value1

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

我该如何修改这个查询以便于让它查找所有name1=value1name2=value2的文档?

(类似于)

db.collection.find({"name1":"value1","name2":"value2"})
3个回答

16

我想在不同的字段中搜索文本,但全文搜索对我来说不起作用,即使浪费了很多时间。所以我尝试了这个方法。

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

这应该被标记为正确答案。谢谢你,帮了我很大的忙。 - Matthew M.

4

您可以使用以下方法:

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 这篇文章介绍了使用C#和MongoDB进行更新操作的快速入门。涵盖了如何在C#中引用MongoDB.Driver程序包,如何连接到MongoDB服务器和数据库以及如何使用UpdateOneAsync方法更新文档。此外,还提供了一些有关如何编写查询和筛选条件的实用示例。

2

有时候,当你在and操作之上进行not操作时(就像我发现的那样),它并不总是做你想要的事情。你还可以创建一个新的QueryDocument,就像下面展示的那样。这正是你所需要的。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接