$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
、ネストされた配列の一致をサポートしますか?もしそうなら、どのようにクエリを調整しますか?