【发布时间】:2021-10-13 21:03:41
【问题描述】:
我在我的收藏中添加了文本索引。我正在尝试使用带有一些附加过滤器的文本搜索来过滤数据。但它不适用于其他过滤器。
{$text:{$search:"test"},Type:"5"}
上面的查询从 mongoDB Atlas 中返回所有符合条件的 42 个条目。
但是当我从 c# 中执行此操作时,我认为我查询它是错误的。我在这里错过了什么。
var collection = db.GetCollection<TestTbl>("TestTbl");
var filter = Builders<TestTbl>.Filter.Text(searchtext)
&Builders<TestTbl>.Filter.Eq("TypeID", TypeID);
var data = collection.Find(filter).ToList();
这里数据返回null。
当我只在过滤器中提供文本时,它可以正常工作。
{$text:{$search:"test"}}
var collection = db.GetCollection<TestTbl>("TestTbl");
var filter = Builders<TestTbl>.Filter.Text(searchtext);
var data = collection.Find(filter).ToList();
【问题讨论】:
-
尝试使用 And 连接您的过滤器:
var filter = Builders<TestTbl>.Filter.And(Builders<TestTbl>.Filter.Text(searchtext), Builders<TestTbl>.Filter.Eq("TypeID", TypeID)) -
错误在于我的模型,它是 Guid 类型忘记提及字段表示的 bsontype 字符串。谢谢@Michael
标签: c# asp.net mongodb indexing query-builder