MongoDB允许索引子文档数组,如下所述:
Index Arrays with Embedded Documents
在执行$ lookup后,子文档数组仅存在于文档的投影中时,此信息是否仍然有效?
以这种模式为例:
cats collection
{
_id: 1,
name: "betty"
}
{
_id: 2,
name: "britches"
}
{
_id: 3,
name: "bailey"
}
catToys collection
{
_id: 1,
name: "mouse",
toyType: 1
catId: 1
}
{
_id: 2,
name: "yarn",
toyType: 2
catId: 1
}
{
_id: 3,
name: "feather",
toyType: 2
catId: 3
}
该查询基于catId对catToys执行查找,并将catToys的集合作为数组字段插入cat文档中。我想在toyType上创建一个索引。根据上面链接的文章的信息,潜在的索引应如下所示:
{ "catToys.toyType": 1 }
由于catToys仅在完成查找后出现在文档上,并且数据不在文档的开头,因此似乎无法像这样对它进行索引。不管怎样,我很好奇这是否正确。
如果怀疑无法在文档上创建索引来覆盖查询,那么还有其他选择吗?似乎对次要集合建立索引也没有用,因为查找操作是在查找完成之后发生的,因此从这种意义上讲,数据已经是父文档的一部分。