Pymongo中“$ in”的误差是什么意思?

时间:2016-04-12 03:03:53

标签: python mongodb pymongo

for element in self.table1.find({'ji': {'$ne': ""}}):
    gongLiNian = int(element['gongLiNian'])
    gongLiNianScope = [str(gongLiNian-1), str(gongLiNian), str(gongLiNian+1)]
    res = self.table2.find_one({'guanZhi' : element['guanZhi'],
                             'gongLiNian' : {'$in', gongLiNianScope},
                                'name'    :  element['name']})

对于此代码,这是错误:

Traceback (most recent call last):
  File "C:\Users\elqstux\Desktop\study\History\oneJi.py", line 172, in <module>
    oneJi.run()
  File "C:\Users\elqstux\Desktop\study\History\oneJi.py", line 158, in run
    res1 = self.step1()
  File "C:\Users\elqstux\Desktop\study\History\oneJi.py", line 44, in step1
    'gongLiNian' : {'$in', gongLiNianScope},
TypeError: unhashable type: 'list'

但我无法从错误中找到任何线索。你能给我一些建议吗?

1 个答案:

答案 0 :(得分:1)

请参阅此处的逗号:

{'$in', gongLiNianScope}

这是一种初始化集合的语法,您只能将 hashable 数据类型放入集合中。

相反,你想要一本字典:

{'$in': gongLiNianScope}