我在尝试$elemMatch
在双嵌套数组中使用时遇到问题:
假设我有这个a
文件:
a = {'cart': [[{'id': 1, 'count': 1}, {'id': 2, 'count': 3}], [{'id': 1, 'count': 5}]]}
我想在id
1 且count
大于 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}}}})
但都返回无。
那么是否$elemMatch
支持嵌套数组匹配?如果是这样,我应该如何调整我的查询?