我正在使用pymongo,目前只有一个集合。该系列包含代表足球联赛比赛的文件。每场比赛都有目标。目前,目标是作为匹配对象中包含的列表实现的:
{'matchID':1000,
'goals':[{'goalID':200,'scorer':'A'},
{'goalID':201,'scorer':'B']}
]
}
{'matchID':1001,
'goals':[{'goalID':211,'scorer':'C'},
{'goalID':212,'scorer':'D']}
]
}
我想要做的是查询ID高于201的所有目标。我对上述数据的期望是我会得到目标211和212.
我如何在mongodb中实现这一点 - 我正在尝试这样的事情:
x = mycollection.find({'$gt':[{'match.goals.goalID':201}]})
但这并没有让我到任何地方。我应该将目标分成单独的集合并手动引用吗?一旦进入目标,它就再也不会被触及 - 它将是只读的。
答案 0 :(得分:2)
您对该查询有几个问题:
goalID
元素的正确虚线字段名称应为“goals.goalID
” - 也就是说,删除前面的“match.
” $gt
(以及朋友:$gte
,$lt
,$lte
)的正确顺序为field: {$operator: value}
,如:
db.mycollection.find({"goals.goalID": {"$gt": 201}})