【发布时间】:2019-04-21 03:09:37
【问题描述】:
我有一个 mongo 集合,它存储有关产品的信息,它有一个嵌入式数组,可以按日期存储其可用性。
{
"product_id": "A",
"name": "mountain bicycle",
"cost_per_hour": "$5",
"availability":[
{
"timestamp": ISODate("2018-11-19 18:30:00.000Z"),
"available": true
},
{
"timestamp": ISODate("2018-12-20 18:30:00.000Z")
"available": true
},
{
"timestamp": ISODate("2018-12-21 18:30:00.000Z")
"available": false
}
]
}
我想列出给定日期间隔内所有日期可用的所有产品。
示例:如果我查询 ISODate("2018-11-19 18:30:00.000Z") 到 ISODate("2018-12-20 18:30:00.000Z") AND available: true, I应该得到一个带有“product_id”的产品:“A”,因为它在日期间隔之间的所有日期都可用。
但是如果我在 ISODate("2018-11-19 18:30:00.000Z") 到 ISODate("2018-12-21 18:30:00.000Z") 和可用之间查询:真,我不应该得到任何结果,因为该产品并非在日期范围内的所有日期都可用。
我尝试使用 $elemMatch,但它返回的产品至少有 1 个在间隔中给定的日期可用,这是我不想要的。
请指导。
【问题讨论】:
-
我不认为它是重复的。您提到的帖子讨论了投影,而我的帖子处理在多个条件下查询嵌入式 mongo 数组并返回与所有条件匹配的文档。
标签: mongodb mongodb-query