MongoDB Compass $match和$text导致“预期“[”或AggregationStage,但找到“{”,”

hc2pp10m  于 2023-01-04  发布在  Go
关注(0)|答案(4)|浏览(61)

执行简单的$match聚合会导致Expected "[" or AggregationStage but "{" found.错误。

{
  $text: {
    $search: "search query"
  }
}
5jvtdoz2

5jvtdoz21#

我也遇到过同样的错误,但在我的例子中,我使用$addFields$switch语句,这里$regexMatch中断了我在指南针中的管道:

{
  attribute: {
    $switch: {
      branches: [
        {
          case: {
            $regexMatch: {
              input: "$attribute",
              regex: /expression/
            }
          },
          then: "..."
        }
      ],
      default: "$attribute"
    }
  }
}

但是,当我在CLI中执行它时,它运行得非常好

2jcobegt

2jcobegt2#

尝试使用此查询进行搜索,

db.collectionname.aggregate([
       {
        $match:{
             "Field_name":
                {
                   $regex:'Search_value',
                   $options: "si" 
                 }
 }}]);
jljoyd4f

jljoyd4f3#

为了使用$text,你需要创建一个文本索引,假设你有一个名为countries的集合和一个名为capital的文本字段,你可以通过命令db.countries.createIndex({capital:"text"})创建一个文本索引。
现在,您可以按以下方式聚合和使用$text。注意我们将操作括起来的方括号。

db.countries.aggregate([
    {
      $match:{
        $text: {
          $search: "Mumbai"
        }
      }
    }
])
eiee3dmh

eiee3dmh4#

您需要直接在文本框中提供查询对象。
示例

/**
 * query - The query in MQL.
 */
{
  count_field: {"$gt": 1}
}

相关问题