Ruby on rails mongoid上的聚合有很多关系

Ruby on rails mongoid上的聚合有很多关系,ruby-on-rails,ruby,mongodb,mongoid,aggregation-framework,Ruby On Rails,Ruby,Mongodb,Mongoid,Aggregation Framework,我想在一个模型与其他模型有很多关系的地方进行聚合 我的文档是A,它与B有很多关系 order_settlements = A.collection.aggregate( { "$match" => { } }, "$group" => { '_id' => { }, 'B' => { "$first" => "$B"}, } ) 我无法在B中获取任何内容

我想在一个模型与其他模型有很多关系的地方进行聚合

我的文档是
A
,它与
B
有很多关系

order_settlements =  A.collection.aggregate(
    {
      "$match" =>
      {
      }
    },
    "$group" => {
      '_id' => {
      },
      'B' => { "$first" => "$B"},
     }
  )
我无法在
B
中获取任何内容,它总是返回空的
[]

我试着用“渴望加载”——

order_settlements =  A.includes(:B).collection.aggregate(
    {
      "$match" =>
      {
      }
    },
    "$group" => {
      '_id' => {
      },
      'B' => { "$first" => "$B"},
     }
  )

这也没用。是否可以与具有多个关系的对象进行聚合?请告诉我如何操作。

您不能使用MongoDB“period”引用其他集合中的对象。“通过设计”只能访问一个集合。您所能做的最好的事情是首先查询“相关数据”(子项)中的“父项”指标(生成您的模型以适应此情况),然后将匹配的指标作为父项上的
$操作传递给匹配子项条件的文档(同样前提是您的模型存储子项
\u id
值)。但无论使用何种语法或助手,都是两种不同的查询。@NeilLunn:是否可以使用“展开”呢?除非文档是“实际嵌入的”,这才是真正的问题所在。这里没有“连接”。@NeilLunn:使用“包含”怎么样;人们需要重复多少次?没有“连接”!不能在查询集合中不存在的查询中引用数据。任何“插件”或其他方法都只是“模拟”。MongoDB(这里使用的最终存储引擎)不这样做。