$dateDiff - Amazon DocumentDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

$dateDiff

5.0 版的新功能

Elastic 叢集不支援。

$dateDiff 彙總運算子會以指定的單位計算兩個日期之間的差異。它會傳回開始和結束日期之間跨越的單位邊界數目。

參數

  • startDate:開始日期表達式。

  • endDate:結束日期表達式。

  • unit:差異的時間單位。支援的單位為 yearquartermonthweekdayhourminute、、 secondmillisecond

範例 (MongoDB Shell)

下列範例示範如何使用 $dateDiff運算子來計算訂單置放和交付之間的天數。

建立範例文件

db.shipments.insertMany([ { orderId: 1001, orderDate: ISODate("2025-01-10T08:00:00Z"), deliveryDate: ISODate("2025-01-15T14:30:00Z") }, { orderId: 1002, orderDate: ISODate("2025-02-05T10:00:00Z"), deliveryDate: ISODate("2025-02-12T16:45:00Z") } ]);

查詢範例

db.shipments.aggregate([ { $project: { orderId: 1, orderDate: 1, deliveryDate: 1, daysToDeliver: { $dateDiff: { startDate: "$orderDate", endDate: "$deliveryDate", unit: "day" } } } } ]);

輸出

[ { _id: ObjectId('6924a5f2d66dcae121d29517'), orderId: 1001, orderDate: ISODate('2025-01-10T08:00:00.000Z'), deliveryDate: ISODate('2025-01-15T14:30:00.000Z'), daysToDeliver: 5 }, { _id: ObjectId('6924a5f2d66dcae121d29518'), orderId: 1002, orderDate: ISODate('2025-02-05T10:00:00.000Z'), deliveryDate: ISODate('2025-02-12T16:45:00.000Z'), daysToDeliver: 7 } ]

程式碼範例

若要檢視使用 $dateDiff命令的程式碼範例,請選擇您要使用的語言標籤:

Node.js
const { MongoClient } = require('mongodb'); async function example() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const shipments = db.collection('shipments'); const result = await shipments.aggregate([ { $project: { orderId: 1, orderDate: 1, deliveryDate: 1, daysToDeliver: { $dateDiff: { startDate: "$orderDate", endDate: "$deliveryDate", unit: "day" } } } } ]).toArray(); console.log(result); client.close(); } example();
Python
from pymongo import MongoClient def example(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client['test'] shipments = db['shipments'] result = list(shipments.aggregate([ { "$project": { "orderId": 1, "orderDate": 1, "deliveryDate": 1, "daysToDeliver": { "$dateDiff": { "startDate": "$orderDate", "endDate": "$deliveryDate", "unit": "day" } } } } ])) print(result) client.close() example()