如何正确创建索引mongodb?
假设我有这么大的文件 其中2人得到了这个物体阵列如何正确创建索引mongodb?,mongodb,mongodb-query,mongodb-indexes,Mongodb,Mongodb Query,Mongodb Indexes,假设我有这么大的文件 其中2人得到了这个物体阵列 { status: "A", group: "public", "created.dt": .... } { status: "A", group: "private", "created.dt": .... } 我建立索引并确保如下所示: db.collection.ensureIndex({"created.dt":-1}); db.collection.ensureIndex({"created.dt":-1,
{
status: "A",
group: "public",
"created.dt": ....
}
{
status: "A",
group: "private",
"created.dt": ....
}
我建立索引并确保如下所示:
db.collection.ensureIndex({"created.dt":-1});
db.collection.ensureIndex({"created.dt":-1, "status":1});
db.collection.ensureIndex({"created.dt":-1, "group":1});
db.collection.ensureIndex({"created.dt":-1, "status":1, "group":1});
查询:
db.collection.find(
{
"status": {
$in: ["A", "I"]
},
"asset_group": "public"
},
{
sort: {
'created.dt':1
}
}
).count();
错了吗
之后我使这个索引仍然缓慢。
请帮助我进行适当的索引。感谢您提供以下查询:
db.collection.find(
{
"status": {
$in: ["A", "I"]
},
"asset_group": "public"
},
{
sort: {
'created.dt':1
}
}
).count();
最好的索引如下:
db.collection.ensureIndex({"status":1, "asset_group":1, "created.dt":1});
或
既然你在查询
状态
,资产组
-这些值可以在索引前缀中切换
并在created.dt
字段上排序-因此created.at
shold是索引前缀中的最后一个值。注意:排序时,索引可以按相反顺序遍历
对于其他查询,其他索引可能更合适。
阅读更多信息。如果没有看到您的查询(例如:查找、排序等),就无法判断@FirdausRamlan好的,我已经编辑了这篇文章。
db.collection.ensureIndex({"asset_group":1, "status":1, "created.dt":-1});