13

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

我想使用 mongo.exe 控制台来实现这一点。

4

3 回答 3

20

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

你有两个选择:

  1. 使用 _id 属性并将其设置为用户名。
  2. 创建用户名属性,然后在该新属性上添加索引。您仍将拥有 _id,但可以使用用户名进行查询。
于 2013-04-06T19:00:05.517 回答
1

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

于 2013-10-17T13:09:44.480 回答
0

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

我不确定@Serges 的答案是如何不够清楚的,但是要重复一遍,没有办法。从技术上讲,您仍然可以在某些版本的 MongoDB 中取出上限集合中的 _id,但您不能这样做。

此外,我担心您使用用户名,这可能不是分片等活动的最佳选择,并且可能在集群等上创建高活跃度的“热点”,这都是理论上的,因为我不适合您的数据,但是,最好考虑一下这些东西。

于 2013-04-06T21:43:18.327 回答