将我的 JSON 插入到集合中时,MongoDB 会覆盖我的自定义 id 属性吗?

Posted

技术标签:

【中文标题】将我的 JSON 插入到集合中时,MongoDB 会覆盖我的自定义 id 属性吗?【英文标题】:Will MongoDB overwrite my custom id attributes of my JSON when inserting it into a Collection? 【发布时间】:2021-02-07 19:40:58 【问题描述】:

努力理解 MongoDB 对 ids 的处理。现在,我有一个 JSON 文件,我想将它放入 MongoDB 数据库中。文件大致是这样的:


 id: 'HARRYPOTTER-1',
 title: 'Harry Potter and the Philosophers Stone',
 price: 10

我现在想将此文件放入 MongoDB。我的id 属性会丢失吗? MongoDB 会想用自己的唯一 id 覆盖它吗?

我已经确保我的 id 属性是唯一的,并且我正在其他地方使用它们,所以我现在有点担心。但也许我理解错了。

提前非常感谢!

【问题讨论】:

【参考方案1】:
    Mongodb 创建一个 _id 字段任何没有它的元素。 如果_id 已经存在,它不会覆盖它。 (并引发错误)。 如果有id,mongodb 不在乎。不会修改,会遵循1和2。

让我们在 mongo shell 中运行一个示例:

    > db.random.insert(
    ...  id: 'HARRYPOTTER-1',
    ...  title: 'Harry Potter and the Philosophers Stone',
    ...  price: 10
    ... )
    WriteResult( "nInserted" : 1 )

现在检查插入的文档

 > db.random.findOne()
    
        "_id" : ObjectId("5f954cc93b09d63a06f7a4a9"),
        "id" : "HARRYPOTTER-1",
        "title" : "Harry Potter and the Philosophers Stone",
        "price" : 10
    

您可以看到_id 已创建。没关系id,不会被覆盖。


PS:将 json 放入 MongoDB 数据库的正确二进制文件是 mongoimport(而不是 mongorestore)。

有关详细信息,请参阅文档。

【讨论】:

以上是关于将我的 JSON 插入到集合中时,MongoDB 会覆盖我的自定义 id 属性吗?的主要内容,如果未能解决你的问题,请参考以下文章

mongodb怎么插入多个文档

在codeigniter mongodb中插入函数的位置

MongoDB 插入文档

mongoDB 学习六

MongoDB 插入文档

MongoDB 插入文档