【问题标题】:Node Mongoose Seperate Indexes for Seperate Queries用于单独查询的节点 Mongoose 单独索引
【发布时间】:2020-04-22 02:43:48
【问题描述】:

我们可以为同一个集合上完全独立的查询创建完全独立的索引吗?

我想要一个高效的查询,让用户使用这样的索引检索他们的活动

index{ userDBID: 1 }

查询示例

ActivityModel.find({ userDBID }).lean();

我希望对整个应用统计信息进行单独的高效查询,该统计信息也可以获取活动,但需要使用单独的复合索引,像这样

index{season: 1, matchID: 1}

示例查询

ActivityModel.find({ season, matchID }).lean()
ActivityModel.find({ season }).lean();

我发现很难找到可靠的高质量答案。我知道hint() 似乎是一个解决方案,但我对此持怀疑态度。

丹尼尔

【问题讨论】:

  • 请发表您的疑问。如果不查看查询定义,就无法确定您的索引是否有用。
  • @prasad 没必要,反正我会加的

标签: node.js mongodb indexing


【解决方案1】:

当然可以。

你可以添加:

schema.index({ userDBID: 1 });
schema.index({ season: 1, matchID: 1 });

在您的架构声明之后,在使用 mongoose.model('Model', schema); 保存模型之前。

您将看到(一段时间后)在数据库中添加的新模式。如果你使用像MongoDB Compass 这样的检查工具,你甚至会有一个可视化的表示。

我在生产应用程序中有效地使用它,所以我确信这一点(只是今天的用法):

http://prntscr.com/qj1n2o

【讨论】:

  • 在查询时如何专门使用该索引?
  • 索引已添加,对数据库的任何查询都将使用该索引,您无需添加任何其他操作! :)
  • 所以你说它会自动识别我正在使用 userDBID 搜索并自动使用该索引?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 2019-01-12
相关资源
最近更新 更多