用于查找超过一年的方案的MongoDB查询?

时间:2017-09-28 16:40:35

标签: mongodb

鉴于以下架构,我想编写一个MongoDB方案来查找持续时间超过一年的所有方案。即(开始 - 结束)> 1年。 我不确定我是否可以在mongodb query (start - end) > 1 year.

中指定这样的表达式
{
    "update" : ISODate("2017-09-26T15:22:13.172Z"),
    "create" : ISODate("2017-09-26T15:22:13.172Z"),
    "scheme" : {
        "since" : ISODate("2017-09-26T15:22:13.172Z"),
        "startDate":  ISODate("2017-09-26T15:22:13.172Z"),
        "endDate":  ISODate("2018-09-26T15:22:13.172Z"),
    },
}

1 个答案:

答案 0 :(得分:0)

您可以使用减法聚合:

db.yourcollection.aggregate(
[{ 
    $project : { dateDifference: { $subtract: [ "$scheme.endDate", "$scheme.endDate" ] }},
    $match : { "$dateDifference" : { $gt :  31536000000 } } 
}]);

(* 31536000000 =每年毫秒数)

您可以使用另一个$项目在匹配的文档中输出您需要的任何字段。