そのため、クエリを変更して、同時に更新されるがネストされていないフィールドを監視することで、この問題を回避することができました。ネストされたフィールドをチェックする際の問題は、ChangeEvent
のupdateDescription
プロパティには、変更された実際のネストされたオブジェクトは含まれていません。代わりに、変更のドット表記表現が含まれています。したがって、アップデート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}
}
]
}
これが他の誰かに役立つことを願っています!