MongoDB投影查詢是否支持聚合操作

小樊
82
2024-10-30 22:23:39
欄目: 云計(jì)算

是的,MongoDB的投影查詢支持聚合操作。在MongoDB中,投影查詢是一種用于指定返回文檔中哪些字段的方法。在聚合管道中,你可以使用投影查詢來限制和轉(zhuǎn)換聚合結(jié)果。

以下是一個(gè)使用投影查詢和聚合操作的示例:

假設(shè)我們有一個(gè)名為orders的集合,其中包含以下文檔:

{
  "_id": 1,
  "customer_id": 1,
  "items": [
    {
      "product_id": 101,
      "quantity": 2,
      "price": 10
    },
    {
      "product_id": 102,
      "quantity": 1,
      "price": 20
    }
  ],
  "status": "A"
}

現(xiàn)在,我們想要查詢所有訂單的客戶ID和訂單中的商品價(jià)格總和。我們可以使用以下聚合管道查詢:

db.orders.aggregate([
  {
    $project: {
      _id: 0,
      customer_id: 1,
      totalPrice: {
        $reduce: {
          input: "$items",
          initialValue: 0,
          in: {
            $add: ["$$value", { $multiply: ["$$this.price", "$$this.quantity"] }]
          }
        }
      }
    }
  }
])

這個(gè)查詢的結(jié)果將如下所示:

{
  "customer_id": 1,
  "totalPrice": 50
}

在這個(gè)例子中,我們使用了投影查詢來指定返回的字段(customer_idtotalPrice),并在聚合管道中使用$reduce操作符來計(jì)算每個(gè)訂單的商品價(jià)格總和。

0