MongoDB:如何设置另一个字段(不同于_id)作为mongo文件的ID?

时间:2013-04-06 18:46:30

标签: mongodb nosql

例如,如果我想将Username作为我的mongo文档的唯一ID而不是默认的“_id”,该怎么办?

我想使用mongo.exe控制台实现此目的。

3 个答案:

答案 0 :(得分:17)

MongoDB要求_id属性作为自动索引的唯一主键。

您有两种选择:

  1. 使用_id属性并使用用户名设置。
  2. 创建用户名属性,然后在该新属性上添加索引。您仍然可以使用_id,但可以使用用户名进行查询。

答案 1 :(得分:2)

_id在复制中很重要。您可以创建没有_id索引的集合,但将永远无法复制数据库。复制需要每个集合上的_id索引。

答案 2 :(得分:0)

  

我知道,有可能像{username:“John”,年龄:12}这样的记录。我的意思是,没有_id。这该怎么做?

我不确定@Serges的答案是不是很清楚,但重新迭代,没有办法。从技术上讲,你仍然可以在某些版本的MongoDB中的带帽集合中取出_id,但除此之外你不能。

另外我担心你使用用户名,它可能不是分片等活动的最佳选择,并且可以在群集等上创建高活跃度的“热点”,这一切都是理论上的,因为我不在你的位置但是,您的数据最好考虑这些内容。