这里的正确语法是啥?获取类型 TypeError: unhashable type: 'dict
Posted
技术标签:
【中文标题】这里的正确语法是啥?获取类型 TypeError: unhashable type: \'dict【英文标题】: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 提供正确的语法,请在此处编写代码。这样我就可以比较你的语法和我的查询语法。
【参考方案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)
【讨论】:
它成功了,谢谢,伙计。在我的代码查询中是错误的语法以上是关于这里的正确语法是啥?获取类型 TypeError: unhashable type: 'dict的主要内容,如果未能解决你的问题,请参考以下文章
在 postgresql 的 jsonb[] 类型列中插入数据的正确语法是啥