例如,如果我想将用户名作为我的mongo文档的唯一标识而不是使用默认的"_id",该怎么办呢?
我希望使用mongo.exe控制台实现这一目标。
我希望使用mongo.exe控制台实现这一目标。
MongoDB要求使用 _id 属性作为唯一的主键,并自动对其进行索引。
你有两个选项:
{_id: false}
来从查询结果中排除 _id
字段。 - tuned_id
在复制中非常重要。您可以创建一个没有 _id
索引的集合,但是您永远无法复制数据库。 复制需要每个集合上的 _id
索引。
class User
{
[BsonId]
public string Username { get; set; }
public string Password { get; set; }
}
当我将这样的类对象放入mongodb中时,我得到的对象没有_id,并且我很好奇驱动程序如何解释这个对象。操作看起来像什么? - Andrei_id
的对象,C#驱动程序会自动生成一个。 _id
是MongoDB文档必需的主键;您可以选择使用自己的标识符或使用默认的ObjectID。 - Stennie_id
字段与你选择的分片键无关,分片键可以包括一个或多个字段。_id
字段确实是不可变的(一旦设置就不能更改),但如果应用程序不允许用户更改其名称,则用户名可能是可以的。如果需要更改_id
,还可以使用新的_id
复制+重新插入文档(但需要额外的工作来更新对原始_id
的任何引用)。 - Stennie
_id
),因为您需要更新所有指向新用户名的位置(并且由于MongoDB中没有事务,您将面临时间问题)。 - WiredPrairie