gpt4 book ai didi

node.js - 根据日期获取预订数量

转载 作者:可可西里 更新时间:2023-11-01 10:01:42 26 4
gpt4 key购买 nike

如果我将传递为“1970-01-01”并将传递为“1970-01-05”,我如何获得预订总数?

Reserved 数组包含所有从日期

的预订房间

这是我的数据:

[
{
"_id": "5c0a17013d8ca91bf4ee7885",
"name": "ABC",
"reserved": [
{
"from": "1970-01-01",
"to": "1970-01-02",
"isCompleted": false
},
{
"from": "1970-01-03",
"to": "1970-01-05",
"isCompleted": false
},
{
"from": "2017-04-18",
"to": "2017-04-23",
"isCompleted": false
},
{
"from": "2018-01-29",
"to": "2018-01-30",
"isCompleted": false
}
]
}
]

我尝试使用查找查询获取数据(我知道那是不正确的)

db.collection.find({
reserved: {
$not: {
$elemMatch: {
from: {
$lt: "1970-01-07"
},
to: {
$gt: "1970-01-05"
},
"isCompleted": true
}
}
}
})

最佳答案

创建一个利用 $size 的管道过滤数组上的运算符。要进行过滤,您需要 $filter运算符,您的条件将是 $gte 上的 AND和 $lte比较运算符即

{ 
"$and": [
{ "$gte": [ < from field >, "1970-01-01"] },
{ "$lte": [ < to field >, "1970-01-05"] }
]
}

因此您的整体聚合操作将类似于以下内容:

db.collection.aggregate([
{ "$addFields": {
"totalBookings": {
"$size": {
"$filter": {
"input": "$reserved",
"cond": {
"$and": [
{ "$gte": ["$$this.from", "1970-01-01"] },
{ "$lte": ["$$this.to", "1970-01-05"] }
]
}
}
}
}
} }
])

关于node.js - 根据日期获取预订数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54287980/

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