是的,MongoDB的投影查询支持聚合操作。在MongoDB中,投影查询是一种用于指定返回文档中哪些字段的方法。在聚合管道中,你可以使用投影查询来限制和转换聚合结果。
以下是一个使用投影查询和聚合操作的示例:
假设我们有一个名为orders
的集合,其中包含以下文档:
{
"_id": 1,
"customer_id": 1,
"items": [
{
"product_id": 101,
"quantity": 2,
"price": 10
},
{
"product_id": 102,
"quantity": 1,
"price": 20
}
],
"status": "A"
}
现在,我们想要查询所有订单的客户ID和订单中的商品价格总和。我们可以使用以下聚合管道查询:
db.orders.aggregate([
{
$project: {
_id: 0,
customer_id: 1,
totalPrice: {
$reduce: {
input: "$items",
initialValue: 0,
in: {
$add: ["$$value", { $multiply: ["$$this.price", "$$this.quantity"] }]
}
}
}
}
}
])
这个查询的结果将如下所示:
{
"customer_id": 1,
"totalPrice": 50
}
在这个例子中,我们使用了投影查询来指定返回的字段(customer_id
和totalPrice
),并在聚合管道中使用$reduce
操作符来计算每个订单的商品价格总和。