Mongodb查询以计算每个文档两个日期之间的天数
样本文档:Mongodb查询以计算每个文档两个日期之间的天数,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,样本文档: 我是mongodb的新手,我想计算状态等于“已拒绝”的每个文档字段之间的日期间隔天数。您可以尝试以下查询: db.collection.aggregate([ /** Filter out docs */ { $match: { status: "rejected" } }, /** subtract two dates gets timestamp & divide to convert to days & round value */ {
我是mongodb的新手,我想计算状态等于“已拒绝”的每个文档字段之间的日期间隔天数。您可以尝试以下查询:
db.collection.aggregate([
/** Filter out docs */
{ $match: { status: "rejected" } },
/** subtract two dates gets timestamp & divide to convert to days & round value */
{
$addFields: {
daysCount: {
$round: { $divide: [{ $subtract: ["$to", "$from"] }, 86400000] }
}
}
}
]);
测试:您可以尝试以下查询:
db.collection.aggregate([
/** Filter out docs */
{ $match: { status: "rejected" } },
/** subtract two dates gets timestamp & divide to convert to days & round value */
{
$addFields: {
daysCount: {
$round: { $divide: [{ $subtract: ["$to", "$from"] }, 86400000] }
}
}
}
]);
测试:使用运算符ans减去日期,然后将使用结果(以毫秒为单位)转换为天:
db.mycollection.aggregate([
{
"$project": {
"date_diff": { "$subtract": ["$to", "$from"] }
}
},
{
"$project": {
"days": { "$divide": ["$date_diff", 1000 * 60 * 60 * 24] }
}
}
])
为了便于可视化,这里有两个管道阶段,但可以在一个管道阶段合并
此外,您可能需要将天数从浮点转换为整数。这取决于你 使用运算符ans减去日期,然后将使用结果(以毫秒为单位)转换为天:
db.mycollection.aggregate([
{
"$project": {
"date_diff": { "$subtract": ["$to", "$from"] }
}
},
{
"$project": {
"days": { "$divide": ["$date_diff", 1000 * 60 * 60 * 24] }
}
}
])
为了便于可视化,这里有两个管道阶段,但可以在一个管道阶段合并
此外,您可能需要将天数从浮点转换为整数。这取决于你