sql >> データベース >  >> NoSQL >> MongoDB

データベーストリガー一致式の$orセレクターが、データベーストリガーを構成するときにネストの第2レベルで機能しません

    そのため、クエリを変更して、同時に更新されるがネストされていないフィールドを監視することで、この問題を回避することができました。ネストされたフィールドをチェックする際の問題は、ChangeEventupdateDescription プロパティには、変更された実際のネストされたオブジェクトは含まれていません。代わりに、変更のドット表記表現が含まれています。したがって、アップデート2を見ると 私の投稿では、updatedFieldsが表示されます 次の値があります:{\"someOtherField\":310,\"message.fansNo\":1... {\"someOtherField\":310,\"message\":{\"fansNo\":1...の代わりに 。 message.fansNoを使用する $ matchクエリで、Mongoは次のオブジェクトの形状を探します:{\"message\":{\"fansNo\":1... 、この場合は一致しません。ここでの「実際の」解決策は、. message.fansNoで 一致式で、それを機能させることができませんでした(このスレッド

    したがって、私のために機能した「ソリューション」は、実際には私の特定のユースケースで機能する単なる回避策です。someOtherField message.fansNoとともに常に更新されます 、およびsomeOtherField ネストされていません。だから私はsomeOtherFieldと一致させることができます 入れ子を気にせずに。基本的に、この一致式は私が望む結果を与えてくれます:

    {
      "$or": [
        {
          "updateDescription.updatedFields.someOtherField": {"$exists":true}
        },
        {
          "updateDescription.updatedFields.someOtherField":{"$exists":true}
        }
      ]
    }
    

    これが他の誰かに役立つことを願っています!




    1. ClusterControl-高度なバックアップ管理-MongoDB

    2. キャッシングにMongoDbの代わりにRedisを使用するのはなぜですか?

    3. マルチドキュメントトランザクションで名前空間を作成できません(MongoDB 4.0、Spring Data 2.1.0、Spring Boot)

    4. RubyのMULTIブロック内のRedisからどのように読み取ることができますか?