Javascript 为什么下面的查询不返回任何数据?
我在mongodb中有一个集合,并在字段Javascript 为什么下面的查询不返回任何数据?,javascript,mongodb,Javascript,Mongodb,我在mongodb中有一个集合,并在字段name上建立索引,我使用以下查询进行免费搜索以获得匹配的结果,并限制为5 db.getCollection('_event').aggregate([ { "$match": { "$and": [ { "$text": { "$search": "liver" } }, {}, {} ]
name
上建立索引,我使用以下查询进行免费搜索以获得匹配的结果,并限制为5
db.getCollection('_event').aggregate([
{
"$match": {
"$and": [
{
"$text": {
"$search": "liver"
}
},
{},
{}
]
}
},
{
"$group": {
"_id": null,
"count": {
"$sum": 1
},
"results": {
"$push": "$$ROOT"
}
}
},
{
"$project": {
"count": 1,
"results": {
"$slice": [
"$results",
5
]
}
}
}
])
但是有一个数据是利物浦的。当我将其替换为“$search”:“liverpool”时,它返回数据
这里有什么问题?这是打字错误吗?“$search”:“liver”不是输入错误,它应该返回结果,因为它是免费搜索。您的意思是您正在查找具有liver的所有单词?from:对于不区分大小写和不区分重音的文本搜索,$text运算符匹配完整的词干单词。因此,如果一个文档字段包含blueberry一词,那么搜索blue一词将不匹配。这与问题本身是间接的,但是你在这里尝试做的基本概念是非常糟糕的。您正试图使用
$group
将所有结果强制放入带有结果数组的单个文档中,这样您就可以获得“总计数”。不要那样做。如果需要分页结果和“总计数”,则改为对服务器运行两个单独的查询。这是正确的设计,在现实世界中的每一次使用中,您都会尝试将所有结果强制放到一个文档中,从而打破BSON限制。