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。 哪个索引倾向于表现更好?
答案 0 :(得分:0)
这完全取决于您的情况,如果您确定数据库中的文档数将始终保持不变,则使用scoreType。
请紧记:scoreType将为固定值,因此在您查询不同范围时无济于事,即如果创建了分数类型,则可能适用于100到200 考虑到此范围,但不适用于其他范围,即100到500,(您打算使用新的scoreType2吗?)保持范围的灵活性,这是个坏主意