双阵列中的mongodb elemMatch

时间:2012-11-14 11:33:21

标签: python mongodb

尝试在双嵌套数组中使用$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是否支持嵌套数组匹配?如果是这样,我该如何调整我的查询?

1 个答案:

答案 0 :(得分:2)

鉴于你在一个数组中有一个数组,我想你可以试试像

这样的东西
db.cart.find_one({'cart': {'$elemMatch': { '$elemMatch' : {'id': 1, 'count': {'$gt': 2}}}}})