在不使用_id字段的情况下在mongodb中查找文档的最快方法

时间:2019-05-01 14:19:36

标签: database mongodb coding-efficiency

这是我要使用的示例文档。

{
    "_id"       : ObjectId("5cc6ccec131355bb173c64ba"),
    "username"  : "user1",
    "firstname" : "john",
    "lastname"  : "doe"
}

我每次都需要使用username字段查找文档。

我使用了hashed index,但是不允许将其设置为unique字段。

{
    "ok"       : 0,
    "errmsg"   : "Currently hashed indexes cannot guarantee uniqueness. Use a regular index.",
    "code"     : 16764,
    "codeName" : "Location16764"
}

如果大约有100万个商品,那么通过username字段查找商品的最快方法是什么?

1 个答案:

答案 0 :(得分:1)

选项1: 创建一个唯一索引。即使拥有100万条记录,我也不会遇到任何性能问题。即使在5个成员的副本集中,集合的大小超过10亿,我也可以获得不错的性能。

System.Net.Sockets.NetworkStream.Read (Byte [] buffer, Int32 offset, Int32 size)

选项2: 将用户名存储到_id字段中,因为您知道它是唯一的。您将失去使用_id字段检测记录创建时间的功能,因此,如果需要此功能,则需要使用时间戳存储另一个字段。