【问题标题】:mongodb union 2 collections and countmongodb union 2 集合和计数
【发布时间】:2016-09-18 10:18:31
【问题描述】:

我有一个关于 mongodb 和 node.js 的问题。我有这个名为 PIZZA 的集合

{ title: "bacon" }
{ title: "pepperoni" }

还有另一个名为 ORDERS 的集合

{ orderid: 1, pizza: "bacon" }
{ orderid: 2, pizza: "pepperoni" }
{ orderid: 3, pizza: "bacon" }
{ orderid: 4, pizza: "bacon" }

我需要这样的结果

{ title: "bacon", orders: 3 }
{ title: "pepperoni", orders: 1 }

我可以通过一个查询得到这个吗?

我需要知道集合 ORDERS 中有多少项目并将结果与​​集合 PIZZA 合并,我正在使用 MongoClient

【问题讨论】:

标签: javascript node.js mongodb collections union


【解决方案1】:

@chridam 给出的上述答案看起来不错,您只需要使用"$project" 而不是"project"。但是你可能喜欢使用$lookup

db.pizza.aggregate([
{
    $lookup: { 
      from: "orders",
      localField: "title",
      foreignField: "pizza",
      as: "totalOrders"
    }
  },
  {
    $project: {
      _id: 0,
      title: 1,
      orders: { 
        $size: "$totalOrders" 
      }
    }
  }
])

【讨论】:

    【解决方案2】:

    一个简单的聚合管道应该会给你结果:

    db.orders.aggregate([
        {
            "$group": {
                "_id": "$pizza",
                "orders": { "$sum": 1 }
            }
        },
        {
            "$project": {
                "_id": 0,
                "title": "$_id",
                "orders": 1
            }
        }
    ])
    

    【讨论】:

      猜你喜欢
      • 2012-03-08
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      • 2016-12-25
      • 2014-11-30
      • 2020-09-15
      相关资源
      最近更新 更多