【发布时间】:2014-02-18 00:08:20
【问题描述】:
我的架构有一个 ObjectId 数组,它们是另一个架构的引用。我想要的是使用 mongodb 的多键索引方法来索引这个数组条目。 因此,给定 ProductCat 集合中某个文档的 ObjectId,我可以列出当前集合中具有给定 ObjectId 的所有文档_pro_cat 字段。
我对在猫鼬模式声明中声明该字段的确切方式感到困惑,这是我正在尝试的:
_pro_cat: { type: [mongoose.Schema.Types.ObjectId], ref: 'ProductCat', index: true }
_pro_cat: [{ type: mongoose.Schema.Types.ObjectId, ref: 'ProductCat', index: true }]
此系列的名称是卖方。我通过使用架构中的引用来建立关系,实际字段值是一个数组,每个类型都是 ObjectId,这将是另一个集合中文档的 ObjectId(在本例中为 ProductCat)。如果我索引此字段,即 _pro_cat,然后给定 ProductCat 集合中文档的 ObjectId,我将能够找到卖方集合中的所有文档,这些文档在其数组字段 _pro_cat 中给出了 ObjectId。
我想我可能不得不调用一个单独的索引函数。但我认为这是一个字段级索引,因此可能不需要它。
我怀疑后者仅适用于子文档,不适用于参考。如果有人能对此有所了解,将不胜感激。谢谢。
附带问题:[重新解决] 在 mongodb 文档中,它说多键索引是自动的。 multikey indexing。这是否意味着如果该字段被索引,使用上述方法,那么 mongo 将识别该字段是一个数组并使用多键索引。或者是否意味着所有数组类型的字段都会被索引,而不需要显式地告诉它索引。
非常感谢。
【问题讨论】:
-
等等,您的意思是说您希望两个集合之间存在服务器端关系,因为您索引了多值字段?
-
@Sammaye 该系列的名称是卖家。我正在建立关系,通过使用架构中的引用,实际字段值是一个数组,每个类型都是 ObjectId,这将是另一个 Collection 中文档的 ObjectIds (ProductCat 在这个案子)。如果我索引这个字段,即 _pro_cat,然后给定 ProductCat 集合中文档的 ObjectId,我将能够找到 Seller 在其数组字段 _pro_cat 中给出 ObjectId 的集合。
-
我正在寻找正确的语法来声明此索引在架构中发生,或者在定义架构后正确的函数调用。我已更新问题以获取更多详细信息,请再次查看。