我将数据存储在MongoDB中,如下所示:
{
"payouts": {
"entries": [
{
"custom_payout_overwrite": false,
"entry_name": "",
"network_custom_payout_revenue_setting_id": 0,
"network_offer_payout_revenue_id": 1,
"payout_amount": 0.44,
"payout_percentage": 0,
"payout_type": "cpa"
}
],
"total": 1
}
}
我只想获取payout_amount大于0的数据。
我已经尝试过
filter_by = {"payouts.entries.payout_amount": {"$gte": 0}}
data = db[collection_name].find(filter_by)
但是我猜这没用。这是因为条目是一个列表,我不确定如何在列表中进一步查询。谢谢。
最佳答案
您可以使用$elemMatch
:
filter_by = {'payouts.entries': {'$elemMatch': {'payout_amount': {'$gte': 0}}}}
data = db[collection_name].find(filter_by)
关于
$elemMatch
使用情况的文档为here。另请注意:要仅获取
payout_amount
大于0的数据,应使用$gt
(而不是$gte
):filter_by = {'payouts.entries': {'$elemMatch': {'payout_amount': {'$gt': 0}}}}