使用MongoDB C#驱动程序,如何在查询中包含多个字段(我正在使用vb.net)
我知道如何做(对于name1=value1
)
Dim qry = Query.EQ("name1","value1")
我该如何修改这个查询以便于让它查找所有name1=value1
且name2=value2
的文档?
(类似于)
db.collection.find({"name1":"value1","name2":"value2"})
使用MongoDB C#驱动程序,如何在查询中包含多个字段(我正在使用vb.net)
我知道如何做(对于name1=value1
)
Dim qry = Query.EQ("name1","value1")
我该如何修改这个查询以便于让它查找所有name1=value1
且name2=value2
的文档?
(类似于)
db.collection.find({"name1":"value1","name2":"value2"})
我想在不同的字段中搜索文本,但全文搜索对我来说不起作用,即使浪费了很多时间。所以我尝试了这个方法。
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();
您可以使用以下方法:
var arrayFilter = Builders<BsonDocument>.Filter.Eq("student_id", 10000)
& Builders<BsonDocument>.Filter.Eq("scores.type", "quiz");
有时候,当你在and操作之上进行not操作时(就像我发现的那样),它并不总是做你想要的事情。你还可以创建一个新的QueryDocument,就像下面展示的那样。这正是你所需要的。
Query.Not(new QueryDocument {
{ "Results.Instance", instance },
{ "Results.User", user.Email } }))