【问题标题】:Indexing array of references using mongodb multikey indexing method in mongoose在mongoose中使用mongodb多键索引方法索引引用数组
【发布时间】: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 将识别该字段是一个数组并使用多键索引。或者是否意味着所有数组类型的字段都会被索引,而不需要显式地告诉它索引。

非常感谢。

related

【问题讨论】:

  • 等等,您的意思是说您希望两个集合之间存在服务器端关系,因为您索引了多值字段?
  • @Sammaye 该系列的名称是卖家。我正在建立关系,通过使用架构中的引用,实际字段值是一个数组,每个类型都是 ObjectId,这将是另一个 Collection 中文档的 ObjectIds (ProductCat 在这个案子)。如果我索引这个字段,即 _pro_cat,然后给定 ProductCat 集合中文档的 ObjectId,我将能够找到 Seller 在其数组字段 _pro_cat 中给出 ObjectId 的集合。
  • 我正在寻找正确的语法来声明此索引在架构中发生,或者在定义架构后正确的函数调用。我已更新问题以获取更多详细信息,请再次查看。

标签: node.js mongodb mongoose


【解决方案1】:

Multikey Indexing 意味着如果您告诉 mongo 索引该字段,则数组字段中的每个项目都会被索引。

并不意味着所有数组字段都会自动索引,而无需明确告诉 mongo 索引该字段。

【讨论】:

  • 感谢@heinob 澄清这一点。很抱歉,我不清楚我的主要问题,请参阅更新后的问题以及对问题的评论,以回复 Sammaye。谢谢。
猜你喜欢
  • 2015-08-08
  • 2014-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多