我正在使用jupyter笔记本pymongo。我正在尝试使用格式显示我的结果。
这是我收藏的user
的一个例子
"_id": {
"$oid": "61bd0b558659f89f7e5b1c56"
},
"first_name": "Brandise",
"last_name": "Ingerman",
"email": "bingerman0@youku.com",
"gender": "Female",
"address": {
"city": "Fresno",
"state": "California",
"country": "United States",
"country_code": "US"
},
"card": {
"card_number": "3571237735836521",
"card_type": "jcb",
"currency_code": "USD",
"balance": 630.16
},
"married_status": "true"
这是我正在执行的查询
pipeline = [
{
"$match":{
"card.card_type": "jcb"
}
},
{
"$sort":{
"card.balance":-1
}
}
]
results = users.aggregate(pipeline)
for user in results:
print(" * user name: {first_name}, card number: {card_number}, balance: {balance}".format(
first_name=user["first_name"],
card_number=user["card.card_number"],
balance=user["card.balance"],
))
上面写着
15 print(" * user name: {first_name}, card number: {card_number}, balance: {balance}".format(
16 first_name=user["first_name"],
---> 17 card_number=user["card.card_number"],
18 balance=user["card.balance"],
19 ))
KeyError: 'card.card_number'
我试过调用card_number
,但它一直提示错误,不知道怎么做。
card_number=user["card"]["card_number"]
balance=user["card"]["balance"]
这应该行得通。返回的MongoDB文档应该是嵌套的字典格式。因此,您需要逐步访问内部字典的密钥。还建议您将从mongo获取的数据转换为python列表。从长远来看,这会让事情变得更容易。
您的集合是否包含不存在card.card_number
键的条目?
尝试运行此查询以查看是否有:
users.find({"card.card_number": {$exists: False}})
pipeline = [
{
"$match":{
"card.card_type": "jcb"
}
},
{
"$sort":{
"card.balance":-1
}
}
]
results = users.aggregate(pipeline)
for user in results:
print(" * user name: {first_name}, card number: {card_number}, balance: {balance}".format(
first_name=user["first_name"],
card_number=user["card"]["card_number"],
balance=user["card"]["balance"],
))