如何根据 MongoDB 中的字段值查找日期差异?
How do I find date difference based on a field value in MongoDB?
我想在 collection 中查找日期差异,但对于匹配给定条件的 objects。
关于如何实现这一目标的任何线索。
目前,我正在使用查询:
db.sales.aggregate([ {
$project: {
item: 1,
dateDifference: {
$subtract: [ "$enddate", "$startdate" ]
}
}
} ])
但这将 return 我在 collection 中所有 objects 的日期差异。
我想说我有一个项目字段,并且有多个项目,比如汽车、自行车、自行车等。现在我只想要基于项目值的日期差异。
假设我们在 collection 中有 4 个会话,其属性如下:
[
{
_id: "112233",
item: "CAR",
startdate: ISODate("2022-03-16T07:38:08.466Z"),
enddate: ISODate("2022-03-16T08:38:08.466Z")
},
{
_id: "11222333",
item: "BIKE",
startdate: ISODate("2022-02-16T07:38:08.466Z"),
enddate: ISODate("2022-02-14T08:38:08.466Z")
},
{
_id: "1122333243",
item: "CAR",
startdate: ISODate("2022-01-16T07:38:08.466Z"),
enddate: ISODate("2022-02-16T01:38:08.466Z")
},
{
_id: "12312233",
item: "BUS",
startdate: ISODate("2021-03-16T07:38:08.466Z"),
enddate: ISODate("2021-03-16T08:38:08.466Z")
}
]
现在我只想找出 CAR 的开始日期和结束日期的区别。
db.collection.aggregate([
{
$match: {
$expr: {
$gt: [
{
$dateDiff: {
startDate: "$startdate",
endDate: "$enddate",
unit: "minute"
}
},
20
]
}
}
}
])
db.collection.aggregate([
{
$match: {
item: "CAR"
}
},
{
$set: {
diff: {
$dateDiff: {
startDate: "$startdate",
endDate: "$enddate",
unit: "day"
}
}
}
}
])
我想在 collection 中查找日期差异,但对于匹配给定条件的 objects。 关于如何实现这一目标的任何线索。
目前,我正在使用查询:
db.sales.aggregate([ {
$project: {
item: 1,
dateDifference: {
$subtract: [ "$enddate", "$startdate" ]
}
}
} ])
但这将 return 我在 collection 中所有 objects 的日期差异。
我想说我有一个项目字段,并且有多个项目,比如汽车、自行车、自行车等。现在我只想要基于项目值的日期差异。
假设我们在 collection 中有 4 个会话,其属性如下:
[
{
_id: "112233",
item: "CAR",
startdate: ISODate("2022-03-16T07:38:08.466Z"),
enddate: ISODate("2022-03-16T08:38:08.466Z")
},
{
_id: "11222333",
item: "BIKE",
startdate: ISODate("2022-02-16T07:38:08.466Z"),
enddate: ISODate("2022-02-14T08:38:08.466Z")
},
{
_id: "1122333243",
item: "CAR",
startdate: ISODate("2022-01-16T07:38:08.466Z"),
enddate: ISODate("2022-02-16T01:38:08.466Z")
},
{
_id: "12312233",
item: "BUS",
startdate: ISODate("2021-03-16T07:38:08.466Z"),
enddate: ISODate("2021-03-16T08:38:08.466Z")
}
]
现在我只想找出 CAR 的开始日期和结束日期的区别。
db.collection.aggregate([
{
$match: {
$expr: {
$gt: [
{
$dateDiff: {
startDate: "$startdate",
endDate: "$enddate",
unit: "minute"
}
},
20
]
}
}
}
])
db.collection.aggregate([
{
$match: {
item: "CAR"
}
},
{
$set: {
diff: {
$dateDiff: {
startDate: "$startdate",
endDate: "$enddate",
unit: "day"
}
}
}
}
])