gpt4 book ai didi

mongodb - 如何比较mongo聚合框架中的两个日期?

转载 作者:行者123 更新时间:2023-12-04 12:47:12 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





MongoDb query condition on comparing 2 fields

(4 个回答)


4年前关闭。




我们目前正在使用元数据库来分析我们的数据。我在使用聚合查询进行查询时遇到了问题。我想要 date1 在 date2 之前的所有文档。 (我使用了 3 个过滤器来调试我的结果,稍后应该可以将其放入 1 个匹配过滤器中)

[{
"$match": {
"date1": {
"$exists": true
}
}
}, {
"$project": {
"_id": 0,
"date1": 1,
"date2": 1
}
}, {
"$match": {
"date1": {
"$lt": "$date2"
}
}
}]

我总是没有结果。谁能帮我查询?

编辑:

文件如下所示:
 { 
_id: ObjectID,
date1: ISODate("2016-10-04T08:34:15.041Z"),
date2: ISODate("2016-10-05T08:34:15.041Z")
... some more fields that are not interesting for this query
}

集合中有大约 50k 文档。

最佳答案

您可以使用 $where比较两个日期字段。

db.collection.find({
$where : "this.date1 < this.date2"
});

满足上述条件的文件将出现在结果中。如果任何没有属性的文档 date1date2不会出现在结果中。

使用聚合函数:-

$cmp 可以用来比较值。 -1表示第一个小于第二个。

需要第一个管道来消除不包含 date1 的文档。和 date2
db.collection.aggregate([
{
"$match": {
"date1": {
"$exists": true
},
"date2": {
"$exists": true
}
}
},
{"$project": {
"date1":1,
"date2":1,
"dateComp": {"$cmp":["$date1","$date2"]}
}
},
{"$match":{"dateComp": -1}}

]);

关于mongodb - 如何比较mongo聚合框架中的两个日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43778114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com