这里的正确语法是啥?获取类型 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[] 类型列中插入数据的正确语法是啥

截至 2012 年 11 月,通过 json 和 php 获取 youtube 数据的正确语法是啥?

SQL中SOURCE命令的正确语法是啥

获取Android NDK版本的正确方法是啥

类型不正确时引发 TypeError

执行 sql 语法的正确语法是啥?