我有关于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
答案 0 :(得分:0)
简单的聚合管道应该为您提供结果:
db.orders.aggregate([
{
"$group": {
"_id": "$pizza",
"orders": { "$sum": 1 }
}
},
{
"$project": {
"_id": 0,
"title": "$_id",
"orders": 1
}
}
])
答案 1 :(得分:0)
@chridam给出的上述答案看起来不错,您只需要使用"$project"
而不是"project"
。但是,您可以使用$lookup
db.pizza.aggregate([
{
$lookup: {
from: "orders",
localField: "title",
foreignField: "pizza",
as: "totalOrders"
}
},
{
$project: {
_id: 0,
title: 1,
orders: {
$size: "$totalOrders"
}
}
}
])