我是mongodb的新手。Mongodb插入doc沒有_id字段
我需要插入一個沒有自動生成_id字段的文檔。
我需要將字段Tenant_id設置爲唯一或需要將「_id」字段更改爲Tenant_id。
該怎麼辦?
像這樣
Tenant
{Tenant_id: 123, Tenant_info: ...}
我是mongodb的新手。Mongodb插入doc沒有_id字段
我需要插入一個沒有自動生成_id字段的文檔。
我需要將字段Tenant_id設置爲唯一或需要將「_id」字段更改爲Tenant_id。
該怎麼辦?
像這樣
Tenant
{Tenant_id: 123, Tenant_info: ...}
默認情況下,所有的規則的集合,如果它不存在自動插入一個_id領域:所以當你插入文檔你可以手動設置_id。
但是,通過將autoIndexId參數明確設置爲false,可以在創建集合時更改此行爲。
> db.createCollection("noautoid", { autoIndexId: false })
{ "ok" : 1 }
然後你可以插入沒有_id字段的文件。但是一些驅動程序,如javascript之類(以及mongo控制檯),會自行添加_id字段。在蒙戈控制檯,你可以這樣做:
有關autoIndexId場> db.noautoid._mongo.insert(db.noautoid._fullName, {name: "Jack"})
> db.noautoid.find()
{ "name" : "Jack" }
更多信息可以在MongoDB documentation找到。此頁面是關於Capped Collections的,但autoIndexId字段對於常規和加蓋的集合都是通用的。
的_id
場,除非您使用上限的集合爲一個蒙戈文檔的默認密鑰。
它是一個不能被排除在文檔結構之外的不可變字段。
我會推薦使用tennant_id
作爲_id
。
每個MongoDB文檔都必須有一個唯一的字段「_id」,如果您沒有提供它,那麼它會自動爲您生成。
無法重命名此字段。
你兩個選擇是:
1)忽略生成的_id領域和使用自己的tenant_id場(你將需要在該字段中添加唯一索引) 或 2)商店tenant_id值在_id字段(並利用它已具有唯一索引的事實)。
只有在插入文檔時沒有爲'_id'字段指定值時,Mongodb會自動生成'_id'字段。
db.tenants.insert({"_id" : 123, "Tenant_info" : ... })
無法刪除任何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
它不工作... –
它不再被允許 - 複製需要_id字段,因此應始終存在。 –