On this page本页内容
$toDate
New in version 4.0.在版本4.0中新增。
Converts a value to a date. 将值转换为日期。If the value cannot be converted to a date, 如果无法将值转换为日期,则$toDate
errors. $toDate
会出错。If the value is null or missing, 如果值为$toDate
returns null.null
或缺失,$toDate
将返回null
。
$toDate
has the following syntax:语法如下:
{
$toDate: <expression>
}
The $toDate
takes any valid expression.$toDate
接受任何有效表达式。
The $toDate
is a shorthand for the following $convert
expression:$toDate
是以下$convert
表达式的简写:
{ $convert: { input: <expression>, to: "date" } }
The following table lists the input types that can be converted to a date:下表列出了可以转换为日期的输入类型:
Double |
|
Decimal |
|
Long |
|
String |
|
ObjectId | |
Timestamp |
The following table lists some conversion to date examples:下表列出了一些转换为日期的示例:
{$toDate: 120000000000.5} | ISODate("1973-10-20T21:20:00Z") |
{$toDate: NumberDecimal("1253372036000.50")} | ISODate("2009-09-19T14:53:56Z") |
{$toDate: NumberLong("1100000000000")} | ISODate("2004-11-19T11:33:20Z") |
{$toDate: NumberLong("-1100000000000")} | ISODate("1935-02-22T12:26:40Z") |
{$toDate: ObjectId("5ab9c3da31c2ab715d421285")} | ISODate("2018-03-27T04:08:58Z") |
{$toDate: "2018-03-20"} | ISODate("2018-03-20T00:00:00Z") |
{$toDate: "2018-03-20 11:00:06 +0500"} | ISODate("2018-03-20T06:00:06Z") |
{$toDate: "Friday"} | Error |
{$toDate: Timestamp({ t: 1637688118, i: 1 })} | ISODate("2021-11-23T17:21:58.00Z") |
Create a collection 使用以下文档创建集合orders
with the following documents:orders
:
db.orders.insertMany( [ { _id: 1, item: "apple", qty: 5, price: 2, order_date: new Date( "2018-03-20" ) }, { _id: 2, item: "pie", qty: 10, price: 3, order_date: new Date( "2018-03-22" ) }, { _id: 3, item: "ice cream", qty: 2, price: 4, order_date: "2018-03-15" }, { _id: 4, item: "almonds" , qty: 5, price: 7, order_date: "2018-03-15 +10:00" } ] )
The following aggregation operation on the orders
collection converts the order_date
to date before sorting by the date value:orders
集合上的以下聚合操作在按日期值排序之前将order_date
转换为date
:
// Define stage to add convertedDate field with the converted order_date value dateConversionStage = { $addFields: { convertedDate: { $toDate: "$order_date" } } }; // Define stage to sort documents by the converted date sortStage = { $sort: { "convertedDate": 1 } }; db.orders.aggregate( [ dateConversionStage, sortStage ] )
The operation returns the following documents:该操作返回以下文档:
{ _id: 4, item: 'almonds', qty: 5, price: 7, order_date: '2018-03-15 +10:00', convertedDate: ISODate("2018-03-14T14:00:00.000Z") }, { _id: 3, item: 'ice cream', qty: 2, price: 4, order_date: '2018-03-15', convertedDate: ISODate("2018-03-15T00:00:00.000Z") }, { _id: 1, item: 'apple', qty: 5, price: 2, order_date: ISODate("2018-03-20T00:00:00.000Z"), convertedDate: ISODate("2018-03-20T00:00:00.000Z") }, { _id: 2, item: 'pie', qty: 10, price: 3, order_date: ISODate("2018-03-22T00:00:00.000Z"), convertedDate: ISODate("2018-03-22T00:00:00.000Z") }