我有一个正在运行的 MongoDB 查询,它没有撤回我知道它应该返回的记录。我过滤两件事:类别和描述(通过 contains/like 正则表达式)。如果我根据类别进行搜索,则该类别中的所有记录都会返回(包括问题记录),但是如果我输入描述,则无法返回该记录。与描述文本匹配的其他记录回来了,但由于某种原因,无论我输入什么,我都无法让这一条记录带着描述条件回来。这很奇怪。
如何使用 MongoDB 调试这样的事情?我的查询很简单:
var match = {};
var category = "hardware"
if (category)
match.Category = category;
var searchText = "ceramic"
if (searchText)
{
match.Description = new RegExp("/.*" + searchText + ".*/");
}
collection.find(match).toArray(function(err, items)
{
response.send(items);
});
我试图找回的项目属于硬件类别,当 searchText 为“”时它会返回。它的描述中有“陶瓷”一词,但是当 searchText 是“陶瓷”(或在其描述中找到的任何其他词)时,该项目就不会回来了。其他在描述中带有“陶瓷”一词的人会这样做,但不是那个,当然该项目的结构与其他项目没有什么不同。它真的应该通过比赛。
大小写是正确的(“陶瓷”在描述和过滤器中都较低),我也尝试过 /i 使搜索不区分大小写。
那么我怎样才能找出为什么这个查询没有产生一个非常清楚匹配它的项目呢?