我是Mongodb的新手。1.我需要插入一个没有自动生成_id字段的文档。1.我需要将字段Tenant_id设置为唯一的,或者需要将“_id”字段更改为Tenant_id。怎么做?像这样的东西
Tenant {Tenant_id: 123, Tenant_info: ...}
jaxagkaj1#
Mongo在www.example.com中声明https://www.mongodb.com/docs/manual/reference/method/db.createCollection/#definition从MongoDB 4.0开始,在本地数据库以外的数据库中创建集合时,不能将选项autoIndexId设置为false。
6qqygrtg2#
默认情况下,如果没有_id字段,所有常规集合都会自动插入该字段。
从MongoDB v4.0开始,没有办法不使用_id字段MongoDB v4.0及以下版本:
_id
但是,在创建集合时,可以通过将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都是通用的。
gywdnpxw3#
_id字段是mongo文档的默认键,除非你使用的是capped集合。它是一个不可变的字段,不能被排除在文档结构之外。我建议使用tennant_id作为_id。
tennant_id
7rtdyuoh4#
只有当你在插入文档时没有为'_id'字段指定值时,Mongodb才会自动生成'_id'字段。所以你可以在插入文档时手动设置_id:
db.tenants.insert( {"_id" : 123, "Tenant_info" : ... } )
8yoxcaq75#
每个MongoDB文档都必须有一个唯一的字段“_id”,如果您没有提供它,它将自动为您生成。无法重命名此字段。您的两个选择是:1)忽略generated _id字段并使用您自己的tenant_id字段(您需要在该字段上添加唯一索引)或2)将tenant_id值存储在_id字段中(并利用它已经具有唯一索引的事实)。
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
6条答案
按热度按时间jaxagkaj1#
Mongo在www.example.com中声明https://www.mongodb.com/docs/manual/reference/method/db.createCollection/#definition
从MongoDB 4.0开始,在本地数据库以外的数据库中创建集合时,不能将选项autoIndexId设置为false。
6qqygrtg2#
默认情况下,如果没有_id字段,所有常规集合都会自动插入该字段。
从MongoDB v4.0开始,没有办法不使用
_id
字段MongoDB v4.0及以下版本:
但是,在创建集合时,可以通过将autoIndexId参数显式设置为false来更改此行为。
然后你可以插入没有_id字段的文档。但是有些驱动程序,比如javascript驱动程序(以及mongo控制台),会自己添加_id字段。在mongo控制台中,你可以这样做:
关于autoIndexId字段的更多信息可以在MongoDB文档中找到。本页是关于Capped Collections的,但autoIndexId字段对于常规和Capped Collections都是通用的。
gywdnpxw3#
_id
字段是mongo文档的默认键,除非你使用的是capped集合。它是一个不可变的字段,不能被排除在文档结构之外。
我建议使用
tennant_id
作为_id
。7rtdyuoh4#
只有当你在插入文档时没有为'_id'字段指定值时,Mongodb才会自动生成'_id'字段。所以你可以在插入文档时手动设置_id:
8yoxcaq75#
每个MongoDB文档都必须有一个唯一的字段“_id”,如果您没有提供它,它将自动为您生成。
无法重命名此字段。
您的两个选择是:
1)忽略generated _id字段并使用您自己的tenant_id字段(您需要在该字段上添加唯一索引)或2)将tenant_id值存储在_id字段中(并利用它已经具有唯一索引的事实)。
9bfwbjaz6#
没有办法在任何mongodb集合中删除_id字段。正如@stephene所说,我尝试了同样的方法,但我得到了这样的错误