繁体   English   中英

MongoDB中不同collections的聚合

[英]Aggregation of different collections in MongoDB

不知道该怎么做,有 SQL 的背景,在那里实现我需要做的事情要容易得多。

基本上我有这样的收藏新闻:

const news = [
{id: '123123123', category: [ObjectID(12312312323), ObjectID(987987987)]},
{id: '123123123', category: []},
{id: '123123123', category: [ObjectID(987987987)]}
]

然后我有这样的集合类别:

const category = [
{name: "123a", _id: ObjectID(123123123}, title:"blah blah" },
{name: "987a", _id: ObjectID(987987987}, title:"blih blah" ,
]

我需要做的是加入两个表并获得像这样的聚合

[
{name: "987a", title: "blih blah", count: 2},
{name: "123a", title: "blah blah", count: 1}
 
]

所以即使在 MySQL 我也会得到类似的东西:

SELECT name, title, count(Select count(category) from news) from categories 

但我没有用 mongoDb / mongoose 得到它。

  • $lookup加入news集合,传递_id作为 localField 和category作为 foreignField
  • $size获取新集合结果的总元素count
db.category.aggregate([
  {
    $lookup: {
      from: "news",
      localField: "_id",
      foreignField: "category",
      as: "count"
    }
  },
  { $set: { count: { $size: "$count" } } }
])

操场

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM