我是 mongodb 的新手。
我需要插入一个没有自动生成 _id 字段的文档。
我需要将字段 Tenant_id 设置为唯一或需要将“_id”字段更改为 Tenant_id。
怎么做?
像这样的东西
Tenant
{Tenant_id: 123, Tenant_info: ...}
我是 mongodb 的新手。
我需要插入一个没有自动生成 _id 字段的文档。
我需要将字段 Tenant_id 设置为唯一或需要将“_id”字段更改为 Tenant_id。
怎么做?
像这样的东西
Tenant
{Tenant_id: 123, Tenant_info: ...}
默认情况下,如果 _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 都是通用的。
除非您使用上限集合,否则该_id
字段是 mongo 文档的默认键。
它是一个不可改变的字段,不能被排除在文档结构之外。
我建议改用tennant_id
as _id
。
只有在插入文档时没有为“_id”字段指定值时,mongodb才会自动生成“_id”字段。因此,您可以在插入文档时手动设置 _id:
db.tenants.insert( {"_id" : 123, "Tenant_info" : ... } )
每个 MongoDB 文档都必须有一个唯一的字段“_id”,如果您不提供它,它将自动为您生成。
无法重命名此字段。
你的两个选择是:
1)忽略生成的_id字段并使用您自己的tenant_id字段(您需要在该字段上添加唯一索引)或2)将tenant_id值存储在_id字段中(并利用它已经具有唯一索引的事实在上面)。
无法删除任何 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