是的,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
操作符来计算每个订单的商品价格总和。