[英]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.