mongodb - MongoDb 查询:基于日期间隔中的所有日期和附加条件
问题描述
我的 mongodb 集合看起来像这样。基本上对于每个 product_id,都有多个文档来存储不同日期的可用性。
{
"_id" : ObjectId("5bf22a773d3999bca17d4a3d"),
"timestamp" : ISODate("2018-12-30T18:30:00.000Z"),
"product_id" : "1",
"available" : true
}
{
"_id" : ObjectId("5bf22a773d3999bca17d4a3d"),
"timestamp" : ISODate("2018-12-31T18:30:00.000Z"),
"product_id" : "1",
"available" : true
}
我应该如何查询,以便给定日期间隔可用性对于该间隔中的所有日期都是正确的。
示例:日期间隔:30-12-2018 到 31-12-2018 AND avalability: true 在这种情况下应该返回 2 个文档,因为可用性在这两个日期都是 true。请帮忙。
解决方案
您可以执行以下操作,返回所有可用性为 true 的查询,然后使用该数组检查使用 .filter 过滤日期,因此您感兴趣的日期介于参数 date1 < dateYouWant < date2 之间。
然后返回包含您感兴趣的日期的数组。
这两个链接将对您有所帮助。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array /筛选
您还可以做的是filter({})
在查询中使用 and 来搜索语句$gt
(大于)和$lt
(小于),您会输入如下内容:
`filter({ $and[{ date: {$gt: minimumDate }, {$lt: maximumDate}, {avaliability: true}] })`
和: https ://docs.mongodb.com/manual/reference/operator/query/and/
gt:https ://docs.mongodb.com/manual/reference/operator/query/gt/
lt:https ://docs.mongodb.com/manual/reference/operator/query/lt/
and运算符确保您获得满足这两个条件的对象
希望能帮助到你!
推荐阅读
- matlab - 如何在 64 位 Matlab / Simulink 中使用 FMIKit 生成 32 位二进制 FMU?
- node.js - 笑话:process.env.PORT 的测试问题
- c++ - io_context.run() in a separate thread blocks
- java - 如何在不读取 pom.xml 中的依赖项的情况下使 proguard-maven-plugin 混淆代码?
- system-verilog - 系统 Verilog 生成 - 无法使用 $size 访问先前循环中的本地总线
- javascript - 带有图像描述的模态图像
- python - 自动将用户令牌分配给自定义配置文件模型 django rest 框架
- c++ - 传递给 CPP 中的函数时 { } 是什么?
- python - 熊猫如何用数据框中的前一个值填充行序列
- python - 没有使用 AJAX 刷新页面的 Django