gpt4 book ai didi

Node.js/MongoDB - 查询日期

转载 作者:太空宇宙 更新时间:2023-11-03 22:58:18 26 4
gpt4 key购买 nike

我在理解如何查询日期时遇到了一些问题;我认为问题可能在于我的数据的结构。这是我的数据库中的示例文档。

{

"phone_num": 12553,
"facilities": [
"flat-screen",
"parking"
],
"surroundings": [
"ping-pong",
"pool"
],
"rooms": [
{
"room_name": "Standard Suite",
"capacity": 2,
"bed_num": 1,
"price": 50,
"floor": 1,
"reservations": [
{
"checkIn": {
"$date": "2019-01-10T23:23:50.000Z"
},
"checkOut": {
"$date": "2019-01-20T23:23:50.000Z"
}
}
]
}
]
}

我正在尝试查询日期以查看特定房间在特定日期范围内是否可用,但无论我做什么,我似乎都无法获得正确的结果,要么是我的查询 404,要么返回空数组。

我真的尝试了一切,现在为了简单起见,我只是想让查询与 checkIn 一起使用,这样我就可以找出我做错了什么。我尝试了下面代码的 100 种变体,但根本无法让它工作。

  .find({"rooms": { "reservations": {   "checkIn" : {"$gte": { "$date": "2019-01-09T00:00:00.000Z"}}}}})

我是否误解了 .find 方法的工作原理,或者我存储日期的方式有问题? (我不断看到人们提到 ISODates,但不太确定那是什么或如何实现)。

提前致谢。

最佳答案

我认为您发布的查询不正确。例如,如果你想查询入住时间在一定范围内的房间,那么查询应该是这样的 -

.find({"rooms.reservations.checkout":{$gte:new Date("2019-01-06T13:11:50+06:00"), $lt:new Date("2019-01-06T14:12:50+06:00")}})

现在,您可以对结帐时间执行相同的操作,以进行适当的筛选,以查找某个日期范围内的可用房间。

不过,请注意,您设计系列的方式从长远来看是不可持续的。例如,您尝试运行的日期查询将为您提供正确的文档,但不会为您提供每个文档中满足您的日期范围的房间。您必须在服务器端自己完成此操作(假设您不使用聚合)。这将阻止您的服务器处理其他待处理的请求,这是不可取的。我建议您分解集合,并将房间预订放在单独的集合中,以便于查询。

关于Node.js/MongoDB - 查询日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54058088/

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