gpt4 book ai didi

mongodb - Mongo $subtract date 在聚合 $match block 中不起作用

转载 作者:可可西里 更新时间:2023-11-01 09:30:13 31 4
gpt4 key购买 nike

我正在创建一个 mongo 聚合查询,它在我的 $match block 中使用 $subtract 运算符。正如下面这些代码中所解释的。

此查询无效:

db.coll.aggregate(
[
{
$match: {
timestamp: {
$gte: {
$subtract: [new Date(), 24 * 60 * 60 * 1000]
}
}
}
},
{
$group: {
_id: {
timestamp: "$timestamp"
},
total: {
$sum: 1
}
}
},
{
$project: {
_id: 0,
timestamp: "$_id.timestamp",
total: "$total",
}
},
{
$sort: {
timestamp: -1
}
}
]
)

但是,第二个查询有效:

db.coll.aggregate(
[
{
$match: {
timestamp: {
$gte: new Date(new Date() - 24 * 60 * 60 * 1000)
}
}
},
{
$group: {
_id: {
timestamp: "$timestamp"
},
total: {
$sum: 1
}
}
},
{
$project: {
_id: 0,
timestamp: "$_id.timestamp",
total: "$total",
}
},
{
$sort: {
timestamp: -1
}
}
]
)

我需要在我的 $match block 上使用 $subtract,所以我不能使用最后一个查询。

最佳答案

从 mongodb 3.6 开始,您可以通过 $expr 在 $match 阶段使用 $subtract。这是文档:https://docs.mongodb.com/manual/reference/operator/query/expr/

我能够通过这个 $expr 和 mongodb 4.2 中名为 $$NOW 的新系统变量获得您所描述的查询。这是我的查询,它为我提供了过去 4 小时内创建的订单:

[ 
{ $match:
{ $expr:
{ $gt: [
"$_created_at",
{ $subtract: [ "$$NOW", 4 * 60 * 60 * 1000] } ]
}
}
}
]

关于mongodb - Mongo $subtract date 在聚合 $match block 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28938120/

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