【发布时间】:2018-04-18 12:57:09
【问题描述】:
我正在尝试使用聚合函数显示按订单订购的所有产品,ID 为“O1234”。我已经多次检查了我的代码,但我一直收到一个错误,说我遗漏了一个“}”括号,但我似乎找不到它。
以下是我为上述查询尝试过的代码:
db.order.aggregate([
{$unwind: "$order"},
{$unwind: "$order.product"},
{$match: {"order._id": 'O1234'}},
{
$project: {
_id:0,
prod_name: "$order.product.prod_name",
prod_price: "$order.product.prod_price",
order_qty: "$order.product.order_qty",
order_total: $multiply:
["$order.product.prod_price", "$order.product.order_qty"]
}
}
]);
下面是我的订单集合代码,其中包含一系列产品:
db.order.insert(
{
_id: 'O1234',
date: '2018-02-11',
time: '09:03',
cust_id: 'C2057',
driver: 'Mike',
products: [
{ _id: 'P1234',
order_qty: 1,
prod_name: 'Office Desk',
prod_price: 50
},
{
_id: 'P5678',
order_qty: 1,
prod_name: 'Bathroom Cabinet',
prod_price: 30
}
]
}
);
db.order.insert(
{
_id: 'O5678',
date: '2018-06-10',
time: '07:30',
cust_id: 'C2018',
driver: 'Jack',
products: [
{
_id: 'P1122',
order_qty: 5,
prod_name: 'Outdoor Chair',
prod_price: 65
},
{
_id: 'P3344',
order_qty: 3,
prod_name: 'Dining Table',
prod_price: 90
},
{
_id: 'P5566',
order_qty: 7,
prod_name: 'Bathroom Cabinet',
prod_price: 30
},
]
}
);
db.order.insert(
{
_id: 'O4321',
date: '2018-11-07',
time: '06:00',
cust_id: 'C0987',
driver: 'Jack',
products: [
{
_id: 'P3344',
order_qty: 10,
prod_name: 'Outdoor Chair',
prod_price: 65
}
]
}
);
db.order.insert(
{
_id: 'O8765',
date: '2017-08-19',
time: '11:30',
cust_id: 'C2018',
driver: 'Mike',
products: [
{
_id: 'P1234',
order_qty: 2,
prod_name: 'Office Desk',
prod_price: 50
}
]
}
);
db.order.insert(
{
_id: 'O2018',
date: '2018-02-11',
time: '20:43',
cust_id: 'C1849',
driver: 'Mike',
products: [
{
_id: 'P1122',
order_qty: 10,
prod_name: 'Outdoor Chair',
prod_price: 65
},
{
_id: 'P5678',
order_qty: 2,
prod_name: 'Bathroom Cabinet',
prod_price: 30
}
]
}
);
提前致谢!
【问题讨论】:
-
我觉得
$multiply: ["$order.product.prod_price", "$order.product.order_qty"]应该在{} -
更清楚的是
order_total: { $multiply:,你有order_total: $multiply:。所以这就是缺少大括号的地方。 -
@JitendraSoftgrid 当我尝试这样做时,我收到一条错误消息:'invalid property id'。
-
@JohnnyHK 我已经缩进了我的代码?
标签: database mongodb aggregate