繁体   English   中英

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

[英]couldn't dispaly results using format in pymongo

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM