例如,如果我想將用戶名作爲我的mongo文檔的唯一ID,而不是默認的「_id」,該怎麼辦?MongoDB:如何設置另一個字段(不同於_id)作爲mongo文檔的ID?
我想使用mongo.exe控制檯來實現此目的。
例如,如果我想將用戶名作爲我的mongo文檔的唯一ID,而不是默認的「_id」,該怎麼辦?MongoDB:如何設置另一個字段(不同於_id)作爲mongo文檔的ID?
我想使用mongo.exe控制檯來實現此目的。
MongoDB需要_id屬性作爲它自動索引的唯一主鍵。
你有兩個選擇:
我知道,這是可能有這樣的記錄像{用戶名: 「約翰」,年齡:12}。我的意思是,沒有_id。這個怎麼做?
我不確定@Serges怎麼回答是不夠清楚不過,再次重申,沒有辦法。從技術上講,你仍然可以在某些版本的MongoDB中去除封閉集合中的_id,但除此之外你不能。
另外我擔心你使用的用戶名,它可能不是最好的活動,如分片,並可以創建集羣等高活躍的「熱點」,這是所有的理論,因爲我不在你的位置與你的數據,但是,最好考慮這個東西。
感謝您的答案,但我只想知道,它怎麼可能。讓我提供一些更多細節。我使用.NET驅動程序,我可以這樣編碼: class用戶 { [BsonId] public string Username {get;組; } public string Password {get;組; } } 當我把這樣的類的對象放到mongodb中時,我得到的對象沒有_id,我很想知道,驅動程序如何解釋這個對象。操作如何? – Andrei 2013-04-06 22:31:56
@AndreiMikhalevich等等,「當我把這樣的類的對象放到mongodb中時,我得到的對象沒有_id,」你是什麼意思?你是說你用_id保存一個對象,並且在數據庫中沒有_id?這應該是不可能的 – Sammaye 2013-04-06 22:48:49
@AndreiMikhalevich:如果你插入一個沒有'_id'的對象,C#驅動程序會爲你生成一個。'_id'是MongoDB文檔的必需主鍵;您可以選擇使用自己的標識符或使用默認的[ObjectID](http://docs.mongodb.org/manual/reference/object-id/)。 – Stennie 2013-04-07 05:47:37
_id
在複製中很重要。您可以創建一個沒有_id
索引的集合,但是您的將永遠無法複製數據庫。複製需要每個集合上的_id
索引。
如果用戶名可以更改,並且用於其他文檔,我建議您不要將它們設爲主鍵('_id'),因爲您需要更新指向新用戶名的所有位置(因爲MongoDB中沒有事務,所以你會遇到計時問題)。 – WiredPrairie 2013-04-06 19:17:51