Python 双阵列中的mongodb elemMatch

Python 双阵列中的mongodb elemMatch,python,mongodb,Python,Mongodb,在双嵌套数组中尝试使用$elemMatch时遇到问题: 假设我有一个文档: 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}}) 但此查询将选择aout 然后我尝试了以下查询: db.cart.f

在双嵌套数组中尝试使用
$elemMatch
时遇到问题:

假设我有一个
文档:

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
out

然后我尝试了以下查询:

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
是否支持嵌套数组匹配?如果是这样,我应该如何调整我的查询?

鉴于您在一个数组中有一个数组,我想您可以尝试以下方法

db.cart.find_one({'cart': {'$elemMatch': { '$elemMatch' : {'id': 1, 'count': {'$gt': 2}}}}})

这很有效。也就是说,由于缺少嵌套的位置操作符,在MongoDB中使用嵌套数组在此时是一个问题。换句话说,您不能总是在较低级别的数组中使用特定的元素。我建议改变模式,你说得对。在$elemmatch中使用$elemmatch不是一个非常健壮的解决方案;如果有10个嵌套数组,该怎么办。需要重新设计对象的结构