为什么 "ObjectId('5efbe85b4aeb5d21e56fa81f')" 不被视为有效的 ObjectId?

Why is "ObjectId('5efbe85b4aeb5d21e56fa81f')" not considered a valid ObjectId?

我正在使用 PyMongo,我正在尝试遍历整个集合并将 ObjectId 显示到我的 Flask 网页上。但是,当我编写方法时,我不断收到错误消息“ObjectId('5efbe85b4aeb5d21e56fa81f')”不是有效的 ObjectId。

以下是我的代码运行

def get_class_names(self):
        temp = list()
        print("1")

        for document_ in db.classes.find():
            tempstr = document_.get("_id")
            tempobjectid = ObjectId(tempstr)
            temp.append(repr(tempobjectid))
            print("2")
        

        classes = list()
        for class_ in temp:
            classes.append(class_, Classes.get_by_id(class_).name)


        return classes

我该如何解决这个问题?

注意:get_by_id,只是传入一个ObjectId,在数据库中查找。

  tempstr = document_.get("_id")

已经检索到 ObjectId。然后在调用 repr 之前将其再次包装在另一个 ObjectId 中。如果你 print(type(tempstr)),你会看到它是一个 ObjectId

就做temp.append(tempstr).

顺便说一句,您应该将变量 tempstr 重命名为 tempId 或更合适的名称。