2

mongodb のステッチ アプリケーションの $match 式が正しく機能しません。

コレクション内の 1 つのフィールドでのみ機能する単純な更新トリガーを設定しようとしています。

トリガーのセットアップは $match アグリゲーションを提供しますが、これはセットアップが簡単に見えます。

たとえば、指定したコレクションの「online」フィールドが「true」に設定されたときにのみトリガーを起動する場合は、次のようにします。

{"updateDescription.updatedFields":{"online":"true"}}

ステッチトリガーの場合は次と同じです:

{$match:{{updateDescription.updatedFields:{online:"true"}}}

問題は、オブジェクトであるフィールドの更新を照合しようとするときです。(たとえばhours:{online:40,offline:120}

何らかの理由で $exists または $in が機能しない

{"updateDescription.updatedFields":{"hours":{"$exists":true}}

機能しません。次のようなこともありません。

{"updateDescription.updatedFields":{"hours.online":{"$exists":true}}

トリガーの $match は、通常の mongo $match とまったく同じように機能するはずです。彼らはただ一例を提供します:

{
  "updateDescription.updatedFields": {
    "status": "blocked"
  }
}

例はここからです: https://docs.mongodb.com/stitch/triggers/database-triggers/

100通りのバリエーションを試しましたが、うまくいきません

一致が次のような特定の値である場合、トリガーは正常に機能しています。

{"updateDescription.updatedFields":{"hours.online":{"$numberInt\":"20"}}

次に、データベースでhours.onlineを20に設定しました。

4

2 に答える 2