Mongodb插入没有_id字段的文档

klsxnrf1  于 2023-04-20  发布在  Go
关注(0)|答案(6)|浏览(209)

我是Mongodb的新手。
1.我需要插入一个没有自动生成_id字段的文档。
1.我需要将字段Tenant_id设置为唯一的,或者需要将“_id”字段更改为Tenant_id。
怎么做?
像这样的东西

Tenant
        {Tenant_id: 123, Tenant_info: ...}
jaxagkaj

jaxagkaj1#

Mongo在www.example.com中声明https://www.mongodb.com/docs/manual/reference/method/db.createCollection/#definition
从MongoDB 4.0开始,在本地数据库以外的数据库中创建集合时,不能将选项autoIndexId设置为false。

6qqygrtg

6qqygrtg2#

默认情况下,如果没有_id字段,所有常规集合都会自动插入该字段。

从MongoDB v4.0开始,没有办法不使用_id字段
MongoDB v4.0及以下版本:

但是,在创建集合时,可以通过将autoIndexId参数显式设置为false来更改此行为。

> db.createCollection("noautoid", { autoIndexId: false })
{ "ok" : 1 }

然后你可以插入没有_id字段的文档。但是有些驱动程序,比如javascript驱动程序(以及mongo控制台),会自己添加_id字段。在mongo控制台中,你可以这样做:

> db.noautoid._mongo.insert(db.noautoid._fullName, {name: "Jack"})
> db.noautoid.find()
{ "name" : "Jack" }

关于autoIndexId字段的更多信息可以在MongoDB文档中找到。本页是关于Capped Collections的,但autoIndexId字段对于常规和Capped Collections都是通用的。

gywdnpxw

gywdnpxw3#

_id字段是mongo文档的默认键,除非你使用的是capped集合。
它是一个不可变的字段,不能被排除在文档结构之外。
我建议使用tennant_id作为_id

7rtdyuoh

7rtdyuoh4#

只有当你在插入文档时没有为'_id'字段指定值时,Mongodb才会自动生成'_id'字段。所以你可以在插入文档时手动设置_id:

db.tenants.insert( {"_id" : 123, "Tenant_info" : ... } )
8yoxcaq7

8yoxcaq75#

每个MongoDB文档都必须有一个唯一的字段“_id”,如果您没有提供它,它将自动为您生成。
无法重命名此字段。
您的两个选择是:
1)忽略generated _id字段并使用您自己的tenant_id字段(您需要在该字段上添加唯一索引)或2)将tenant_id值存储在_id字段中(并利用它已经具有唯一索引的事实)。

9bfwbjaz

9bfwbjaz6#

没有办法在任何mongodb集合中删除_id字段。正如@stephene所说,我尝试了同样的方法,但我得到了这样的错误

> db.noautoid._mongo.insert(db.noautoid._fullName, {name: "Jack"});
 2015-06-18T11:22:29.149+0530 E QUERY    Error: insert needs 3 args
 at (shell):1:20

相关问题