如何正确创建索引mongodb?

如何正确创建索引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,

假设我有这么大的文件

其中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":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});