将我的 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 属性吗?的主要内容,如果未能解决你的问题,请参考以下文章