Python 列表与 MongoDB 插入

0 投票
2 回答
3005 浏览
提问于 2025-04-17 19:02

我需要帮助来理解这里发生了什么,并且希望能得到一些建议来避免这个问题!

这是我的代码片段:

      result = [list of dictionary objects(dictionary objects have 2 keys and 2 String values)]
      copyResults = list(results);
      ## Here I try to insert each Dict into MongoDB (Using PyMongo)
      for item in copyResults:
        dbcollection.save(item) # This is all saving fine in MongoDB.

但是当我再次循环遍历那个原始结果列表时,它显示出字典对象,并且自动添加了一个新的字段,这个字段是来自MongoDB的ObjectId!

后来在代码中,我需要把那个原始结果列表转换成json格式,但这个ObjectId导致了一些问题。我不知道为什么它会被添加到原始列表中。

我已经尝试过复制或者创建新列表等等,但在保存后,原始列表中仍然会添加ObjectId。

请给我一些建议!

2 个回答

0

或者你可以这样做:
rows['_id'] = str(rows['_id'])

记得如果之后需要更新的话,要把它改回来哦。

1

在MongoDB中,每个保存的文档都需要有一个叫做'_id'的字段,这个字段在同一个集合中的文档里必须是唯一的。如果你没有提供这个字段,MongoDB会自动生成一个,使用的是一种叫做ObjectId的东西(在pymongo中是bson.objectid.ObjectId)。

如果你需要把文档导出为json格式,你必须在转换成json之前先去掉'_id'这个字段。

撰写回答