Return只有查询中的条件匹配才记录 | MongoDB
Return record only if the condition in the query matches | MongoDB
下面是我的查询
db.getCollection('ledgers').aggregate(
[
{
"$project":{
"name":1,
"generated":1
timeSpend:{
$divide :
[{
$subtract:
["$generated",new Date()]
}, 3600000
]
}
}
}
])
generated -- 是保存 ISO 日期值的列 (ISODate("2001-04-11T22:12:01.249Z"))
在这里,我试图通过减去当前日期来计算小时数。我还想添加一个过滤器,如果 timeSpend 大于 14 小时,只有那些记录应该 return.
我不想 return timeSpend 值小于 14 小时的整个记录
您可以添加一个 $match
阶段来过滤结果 timeSpend > 14
如果您的日期是过去的日期,则 $subtract
应该反转。
timeSpend = new Date() - $generated
[
{
"$project": {
"name": 1,
"generated": 1,
"timeSpend": {
$divide: [
{
$subtract: [
new Date(),
"$generated"
]
},
3600000
]
}
}
},
{
"$match": {
timeSpend: {
$gt: 14
}
}
}
]
试一试here
下面是我的查询
db.getCollection('ledgers').aggregate(
[
{
"$project":{
"name":1,
"generated":1
timeSpend:{
$divide :
[{
$subtract:
["$generated",new Date()]
}, 3600000
]
}
}
}
])
generated -- 是保存 ISO 日期值的列 (ISODate("2001-04-11T22:12:01.249Z"))
在这里,我试图通过减去当前日期来计算小时数。我还想添加一个过滤器,如果 timeSpend 大于 14 小时,只有那些记录应该 return.
我不想 return timeSpend 值小于 14 小时的整个记录
您可以添加一个 $match
阶段来过滤结果 timeSpend > 14
如果您的日期是过去的日期,则 $subtract
应该反转。
timeSpend = new Date() - $generated
[
{
"$project": {
"name": 1,
"generated": 1,
"timeSpend": {
$divide: [
{
$subtract: [
new Date(),
"$generated"
]
},
3600000
]
}
}
},
{
"$match": {
timeSpend: {
$gt: 14
}
}
}
]
试一试here