【问题标题】:what is the correct syntax here? getting type TypeError: unhashable type: 'dict这里的正确语法是什么?获取类型 TypeError: unhashable type: 'dict
【发布时间】:2021-12-13 16:13:26
【问题描述】:
query={"colourCode" : "orange" },{"createdOn":{ "$gt" : my_datetime}},{"assignmentRef":{'$ne':None}}

cursor = collection.find({query},{'createdOn':1,'assignmentRef.name':1,'_id':0,'colourCode':1})


list_cur = list(cursor)

df = DataFrame(list_cur)
print(df)

Result

TypeError: unhashable type: 'dict'

这里有什么问题?请用正确的语法重写代码,以便我清楚地理解它。

【问题讨论】:

  • 哪一行发出此错误?而且你的query 真的是一个字典元组,就像你在这里给出的那样?
  • @khelwood 第一行查询出错,有什么解决办法?
  • 似乎查询应该是(单个)字典。您不能将存储在变量query 中的字典集合合并到单个字典中,只需将其包装在{} 中,例如{query}
  • @HenryEcker 请为 {query} 提供正确的语法,请在此处编写代码。这样我就可以比较你的语法和我的查询语法。

标签: python mongodb dataframe nosql pymongo


【解决方案1】:

你有两个问题;查询需要构造为字典(您创建一个元组),并且 find 的第一个参数只需为 query 而不是 {query}

这应该更接近您的需要:

import datetime
from pandas import DataFrame
from pymongo import MongoClient

db = MongoClient()['mydatabase']
collection = db.mycollection
my_datetime = datetime.datetime.now()

query = {"colourCode": "orange", "createdOn": {"$gt": my_datetime}, "assignmentRef": {'$ne': None}}

cursor = collection.find(query, {'createdOn': 1, 'assignmentRef.name': 1, '_id': 0, 'colourCode': 1})

list_cur = list(cursor)

df = DataFrame(list_cur)
print(df)

【讨论】:

  • 它成功了,谢谢,伙计。在我的代码查询中是错误的语法
猜你喜欢
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 2016-09-24
相关资源
最近更新 更多