选择列值的类型以在mongo中建立索引

时间:2018-10-04 10:57:06

标签: mongodb indexing mongodb-query

document : {
     score:123
}

我在文档中有一个名为得分(整数)的字段。我想使用范围查询 db.collection.find({score:{$ gte:100,$ lt:200}})。我有这些范围的一定数量(大约20个)。
我是否应该在文档中引入一个新字段来说明范围的类型,然后查询该范围的标识符。例如-

document: {
    score: 123,
    scoreType: "type1"
}

哪个查询更好-
1. db.collection.find({score:{$ gte:100,$ lt:200}})
2. db.collection.find({scoreType:“ type1”})

无论如何,我都必须在score或scoreType上创建一个Index。 哪个索引倾向于表现更好?

1 个答案:

答案 0 :(得分:0)

这完全取决于您的情况,如果您确定数据库中的文档数将始终保持不变,则使用scoreType。

请紧记:scoreType将为固定值,因此在您查询不同范围时无济于事,即如果创建了分数类型,则可能适用于100到200 考虑到此范围,但不适用于其他范围,即100到500,(您打算使用新的scoreType2吗?)保持范围的灵活性,这是个坏主意