无法通过 pymongo 中的 insert() 为 mongodb 和属性错误创建 collection

Unable to create a collection through insert() in pymongo for mongodb and an attribute error

我正在尝试将文档输入我的 mongodb 颜色 collection 的测试数据库,该数据库不存在,但如果不存在,它应该创建一个。我的以下代码没有显示任何名为“颜色”的新 collection,据我了解我正在关注这些链接的教程 1,2 它应该创建一个。

代码给出一个 AttributeError:'ObjectId' object 没有属性 'inserted_id' 如果我不注释掉我试图访问 insert_one() 返回的 ObjectId 的代码的最后两行。请查看教程,看看我做错了什么,下面是我使用 pymongo 在 python 中插入代码。代码运行时注释掉最后两行,但没有创建 collection。我正在使用“Mongo Express”作为 mongodb 的 GUI 来查看 collection 和文档。输入的 JSON 示例是从互联网上使用的,不是我自己的。

    #!/usr/bin/env python
from pymongo import MongoClient
#from datetime import datetime
client = MongoClient()
db = client.test
result = db.colors.insert(
        {
         "colorsArray":[{
                        "colorName":"red",
                        "hexValue":"#f00",
                    },
                    {
                        "colorName":"green",
                        "hexValue":"#0f0"
                    },
                    {
                        "colorName":"blue",
                        "hexValue":"#00f"
                    },
                    {
                        "colorName":"cyan",
                        "hexValue":"#0ff"
                    },
                    {
                        "colorName":"magenta",
                        "hexValue":"#f0f"
                    },
                    {
                        "colorName":"yellow",
                        "hexValue":"#ff0"
                    },
                    {
                        "colorName":"black",
                        "hexValue":"#000"
                    }
         ]
     }
)
x = result.inserted_id
print x

[已解决] 更新:Mongo Express 工作不正常,添加的 collection 没有出现在 GUI 中,但是在停止 mongod 服务并重新启动系统然后重新启动 mongod 服务后,Mongo Express 也解决了这个问题.

The code give an AttributeError:'ObjectId' object has no attribute 'inserted_id'

这是因为您正在使用 insert 方法,其中 return ObjetId 对象和; ObjectId 没有属性 inserted_id。你应该使用 insert_one 方法。