如何解决根据gt和lt创建mongodb索引
我的收藏中有很多文档叫做“产品”,
我想通过为其创建索引来提高性能。
问题在于 IDK 索引是如何工作的,所以 IDK 索引会有所帮助。
我最常用的查询是关于字段“storeId”和“salesDates”
storeId 只是字符串,所以我认为创建索引很好,
但棘手的是 salesDates,salesDates 是 Object 有两个字段 from 和 to 喜欢这个
product {
...someFields,storeId: string,salesDate {
from: Date time Number
to: Date time Number
}
}
我的查询基于 $gt
$lt
例如
product.find({
storeId: "blah",salesDate.from : {$gt: 1423151234,$lt: 15123123123 }
})
或
product.find({
storeId: "blah",salesDate.from: {$gt: 1423151234},salesDate.to: {$lt: 15123123123 }
})
这个案例的正确索引是什么?
解决方法
对于您的特定用例,我建议您仅在
from 键并在您的查找查询中使用 $ge
和 $le
。
原因是索引的键数越少(在可以避免多个键查询的情况下)越好。
确保您按照以下顺序进行索引和查找操作。
索引命令和顺序:
db,product.createIndex({
"storeId": 1,"salesDate.from": -1,// Change `-1` to `1` if you want to ISODate key to be indexed in Ascending order
})
查找命令:
db,product.find({
"storeId": "blah","salesDate.from": {$gt: 1423151234,$lt: 15123123123 },})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。