簡體   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