无法使用 pymongo 中的格式显示结果



我正在使用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"],
))

最新更新