我有一个用户user_list=["5c471d607f","5c63e9e46a","5c63e9e44e"]
的列表,我试图将其插入mongodb以便将其插入mongodb中,我的代码是:
for i in range(0,len(user_list)):
collection_4.update_one({'user_id':ObjectId(user_list[i])},{'$set':{'products': temp_list }},upsert=True)
This is giving me error, TypeError: list indices must be integers or slices, not ObjectId
虽然我可以在尝试时将其插入:
collection_4.update_one({'user_id':ObjectId("5c471d607f")},{'$set':{'products': temp_list }},upsert=True)
我的代码有什么问题?
答案 0 :(得分:0)
您的脚本中某处必须有另一个错误。我可以通过执行以下操作来重现您的错误:
from bson import ObjectId
l = ['a', 'b', 'c']
l[ObjectId('5c91ec870000000000000000')]
给予:
TypeError: list indices must be integers or slices, not ObjectId
确定要不要使用ObjectId
而不是使用索引对列表进行切片?
您可能需要打印更多代码,因为您当前的示例似乎还可以。
@DirtyBit的另一项改进是,您可以使用enumerate
遍历列表,同时跟踪索引:
for i, item in enumerate(user_list):
collection_4.update_one({'user_id':ObjectId(item)},{'$set':{'products': temp_list }},upsert=True)
但是再一次,您不需要索引,因此您也可以这样做:
for item in user_list:
答案 1 :(得分:-1)
尝试
for i in range(0,len(user_list)):
myid = user_list[i]
collection_4.update_one({'user_id':str(myid)},{'$set':{'products': temp_list }},upsert=True)