当前位置: 首页 > 知识库问答 >
问题:

无法通过pymongo中的insert()为mongodb创建集合,并且出现属性错误

梁华清
2023-03-14

我试图输入文档到我的mongoDB测试数据库中的颜色集合,这是不存在的,但它应该创建一个,如果一个不存在。我下面的代码不显示任何名为“颜色”的新集合,据我所知,我在这些链接1,2中遵循的教程应该创建一个。

代码给出了一个AttributeError:“ObjectId”对象没有属性“inserted\u id”,如果我没有注释掉代码的最后两行,在这两行中我试图访问insert\u one()返回的ObjectId。请看一下教程,看看我做错了什么,下面是我使用pymongo在python中插入的代码。代码运行时注释掉最后两行,但没有创建集合。我使用“MongoExpress”作为mongodb的GUI来查看集合和文档。输入JSON示例是从internet使用的,而不是我自己的。

    #!/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无法正常工作,添加的集合没有出现在图形用户界面中,但在停止mongod服务并重新启动系统,然后重新启动mongod服务后,MongoExpress也解决了这个问题。

共有1个答案

步嘉德
2023-03-14

代码给出了AttributeError:“ObjectId”对象没有“inserted\u id”属性

这是因为您正在使用insert方法,该方法返回ObjetId对象和<代码>对象id没有插入的属性id。您应该使用insert\u one方法。

 类似资料:
  • MongoDB 中的集合是一组文档的组合,类似于关系型数据库(例如 MySQL)中的数据表。集合存在于数据库中,且没有固定的结构,您可以向集合中插入不同格式或类型的数据。 在 MongoDB 中,您可以使用 createCollection() 方法来创建集合,语法格式如下: db.createCollection(name, options) 参数说明如下: name: 要创建的集合名称; op

  • 我正在尝试获取mongodb中存在的所有数据库的值,迭代所有数据库和集合,然后打印it文档。我可以打印作为变量传递集合的文档,但不能在所有数据库和集合上进行迭代(作为变量的值)。有人知道pymongo是否支持动态地作为值传递,而不是将集合和数据库作为变量本身传递?

  • 我有一个问题。在使用Eclipse创建Spring Boot项目并配置文件后,我的集合没有创建,而在执行后,Eclipse控制台会发出与MongoDB的连接已正常执行的信号。我不明白发生了什么。使用MySQL我们创建了表,因此我期望创建集合,但什么都没有。 总之,部署后,我在MongoDB中看不到我的集合(类annoted)。

  • 我想允许用户选择他们自己的持久性技术,要做到这一点,开发人员必须编写实现给定接口的实体。 默认情况下,应用程序使用sping-data与mongob,以下是从实体提取代码: 及其相关存储库: 在运行集成测试时,我注意到应用程序在一个意外的集合中写入实体,名为handler,作为实体接口,而不是在预期的集合中,名为event_handlers,此外,复合键不起作用,因为它与一直为空的正确集合相关联。

  • 我正在尝试将mongoDb与Spring的MongoTemplate连接起来。我也试过将'spring-data-mongodb'的版本从1.7.2.版更改为1.8.2.版,但即使这样也行不通。 下面是我在项目中使用的代码。 这是我的pom.xml 我的SpringMongoConfig文件 这是我的主要班级 堆栈跟踪:

  • 本文向大家介绍详解MongoDB中创建集合与删除集合的操作方法,包括了详解MongoDB中创建集合与删除集合的操作方法的使用技巧和注意事项,需要的朋友参考一下 创建集合:createCollection() 方法  是用来创建集合. 语法: 基本的 createCollection() 命令语法如下: 在命令中, name 是要创建的集合的名称. Options 是一个文件,用于指定配置的集合 参