在mongoose中查询/排序引用的引用

时间:2015-02-18 07:38:34

标签: node.js express mongoose

希望我能解释清楚。

我在这里有3种模型类型:用户,产品和商店。我所追求的是每个用户的商店排序列表,基于他们从该商店添加了多少产品。所以基本上“告诉我这个用户的顶级商店”。

伪模式:

var User = {
  name: String
};

var Store = {
  name: String
};

var Product = {
  title: String,
  user: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User',
  }
  store: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Store'
  }
};

那么如何找到用户添加了最多产品的商店?这可能很明显,已经很晚了。 :-P

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试使用Aggregation framework来解决问题 特别是$group管道:

// aggregate whole `Product` collection
Product.aggregate([
  // count products by `user` and `store` and save result to `products_count`
  {$group: {
    _id: {user_id:"$user", store_id:"$store"},
    products_count: {$sum: 1}
  }},
  // sort by most products count
  {$sort: {products_count: -1}}
])

还有$limit$skip个管道,有助于对所有这些内容进行分页。