$elemMatchデュアルネスト配列で使用しようとすると問題が発生します。
私がこのaドキュメントを持っているとしましょう:
a = {'cart': [[{'id': 1, 'count': 1}, {'id': 2, 'count': 3}], [{'id': 1, 'count': 5}]]}
idそして、が1countで2より大きい場合にドキュメントを選択したいと思います。
db.cart.find_one({'cart.0.id': 1, 'cart.0.count': {'$gt': 2}})
しかし、このクエリは選択aします。
次に、これらのクエリを試しました。
db.cart.find_one({'cart': {'$elemMatch': {'id': 1, 'count': {'$gt': 2}}}})
db.cart.find_one({'cart': {'$elemMatch': {'id': 2, 'count': {'$gt': 2}}}})
db.cart.find_one({'cart.0': {'$elemMatch': {'id': 1, 'count': {'$gt': 2}}}})
db.cart.find_one({'cart.0': {'$elemMatch': {'id': 2, 'count': {'$gt': 2}}}})
ただし、すべてNoneを返します。
では$elemMatch、ネストされた配列の一致をサポートしますか?もしそうなら、どのようにクエリを調整しますか?