我想找到“myUpdateTime”字段的最大值和最小值。它是一个时间戳,但存储为字符串。
"myUpdateTime": "2021-11-08T17:42:30.650Z",
建议您将时间戳值存储为
Timestamp
而不是string
以提高性能,以防每次您需要将字段转换为时间戳时,例如这些场景:
要获得
myUpdateTime
的最小值/最大值,您必须使用 $group
运算符对所有文档进行分组。并通过先将min
转换为max
值来执行myUpdateTime
和Timestamp
值。
db.collection.aggregate([
{
$group: {
_id: null,
minUpdateTime: {
$min: {
$toDate: "$myUpdateTime"
}
},
maxUpdateTime: {
$max: {
$toDate: "$myUpdateTime"
}
}
}
}
])
要找到“myUpdateTime”字段的最大值和最小值,您可以将时间戳字符串转换为实际的 Date 对象,然后进行比较。
// Example data
const data = [
{ myUpdateTime: "2021-11-08T17:42:30.650Z" },
{ myUpdateTime: "2021-11-09T15:21:10.850Z" },
{ myUpdateTime: "2021-11-06T12:35:20.250Z" },
];
// Convert timestamps to Date objects and extract their time value
const times = data.map((item) => new Date(item.myUpdateTime).getTime());
// Find the minimum and maximum time value
const minTime = Math.min(...times);
const maxTime = Math.max(...times);
// Convert the time values back to Date objects
const minDate = new Date(minTime);
const maxDate = new Date(maxTime);
// Format the dates as strings
const minDateString = minDate.toISOString();
const maxDateString = maxDate.toISOString();
console.log(`Min: ${minDateString}`);
console.log(`Max: ${maxDateString}`);