Javascript 为什么下面的查询不返回任何数据?

Javascript 为什么下面的查询不返回任何数据?,javascript,mongodb,Javascript,Mongodb,我在mongodb中有一个集合,并在字段name上建立索引,我使用以下查询进行免费搜索以获得匹配的结果,并限制为5 db.getCollection('_event').aggregate([ { "$match": { "$and": [ { "$text": { "$search": "liver" } }, {}, {} ]

我在mongodb中有一个集合,并在字段
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限制。