web-dev-qa-db-ja.com

「[」またはAggregationStageが必要ですが、「{」が見つかりました。MongoDB集計では、$ eq内で$ toLowerを使用できません

このコードを含むMongoDBパイプラインを作成しました。

  {
    $eq: [
      {
        "$toLower": "HELLO"
      },
      "hello"
    ]
  }

そして、これがモンゴコンパスのスクリーンショットです

mongo compass

私はそれが単にtrueを返し、すべてを「$ match」することを期待しています(今のところ)。最終的に私は交換します"HELLO"フィールド名など付き.

このエラーが発生する理由を誰かが知っていますか?

2
CodyBugstein

$ matchは 生の集計式 を受け入れません。代わりに、 $ expr クエリ式を使用して、集計式を$ matchに含めます。

https://docs.mongodb.com/manual/reference/operator/aggregation/match/index.html#pipe._S_match

$expr: {
    $eq: [
      {
        $toLower: "HELLO"
      },
      "hello"
    ]
}

集約コマンドメソッドの検索

1
Valijon