MongoDB索引和视图

MongoDB索引和视图,mongodb,performance,indexing,Mongodb,Performance,Indexing,在查询视图时,我很难找到有关MongoDB使用索引的很多信息: 索引使用和排序操作 视图使用基础集合的索引 由于索引位于基础集合上,因此无法创建, 直接在视图上删除或重新构建索引,或者获取 视图上的索引 不能在视图上指定$natural排序 啊,就这样。我正试图找出如何正确地索引我的基础集合(基于我使用SQL DBs的经验),以最大限度地提高我的应用程序对视图的查询性能 例如,假设我有一个集合,其中包含产品集合中的产品实体,它们共享已删除和类别ID属性。除此之外,我还可以创建一个视图produc

在查询视图时,我很难找到有关MongoDB使用索引的很多信息:

索引使用和排序操作

视图使用基础集合的索引

由于索引位于基础集合上,因此无法创建, 直接在视图上删除或重新构建索引,或者获取 视图上的索引

不能在视图上指定$natural排序

啊,就这样。我正试图找出如何正确地索引我的基础集合(基于我使用SQL DBs的经验),以最大限度地提高我的应用程序对视图的查询性能

例如,假设我有一个集合,其中包含
产品
集合中的产品实体,它们共享
已删除
类别ID
属性。除此之外,我还可以创建一个视图
productsActive
,该视图定义为
{deleted:false}
,并在
products
集合的索引上创建:
{deleted:1}
。现在让我们假设我通常执行以下查询:

db.productsActive.find({categoryId: 'turntable'});
直观地说,我想在
产品
表中使用一个复合索引:

db.products.createIndex({deleted: 1, categoryId: 1});
我做得对吗?我想最终我会被医生的陈述弄糊涂:

视图使用基础集合的索引

鉴于此,mongo能否使用复合索引最初构建视图,然后再查询它?或者只是在一个步骤(绑定到1个索引)中派生视图,然后在视图上生成第二个具有自己索引的、不同的查询?是的,创建一个如上所述的查询就可以了。(顺便说一下,在构建索引时,您可能应该使用param。)

既然如此,mongo可以使用复合索引来初步构建 查看,然后进行后续查询吗

这里真的没有“景观建筑”。该索引存在于集合中,并由包含该索引的视图和其他查询使用

希望这能有所帮助。

@NeilLunn“如果您有一个“问题”,那么只需显示您是如何创建视图以及它所来自的集合上的任何索引,并显示您对所述视图的预期用途。”这就是我在问题中包含的内容。你读了吗?