我有一个包含start_time和end_time属性的文档的集合。该文件的结构如下:
{
_id "4e9650ed1d41c811bc000000"
bid 31.0
start_time 2011-04-04 09:30:00 UTC
volume 31.0
end_time 2011-04-04 09:59:59 UTC
ask 0.0
price 1329.75
}
我希望能够将日期字段拆分为日期和时间组件,并分别对每个字段进行查询。示例查询将是:
获取(9:00至9:30)和(2011-04-04至2011-05-04)之间的所有文件
答案 0 :(得分:1)
如果空间不是存储其他非规范化字段的问题,并且您处于应用程序的设计部分(因此您不必返回并修改现有数据),您可以:
参见示例文档:
{
_id: "4e9650ed1d41c811bc000000",
bid: 31.0,
start_time: 2011-04-04 09:30:00 UTC,
start_hour: "09:30:00", // new field
volume: 31.0,
end_time: 2011-04-04 09:59:59 UTC,
end_hour: "09:59:59", // new field
ask: 0.0 ,
price 1329.75
}
您的问题的答案似乎是您无法在查询中有效地分离日期和时间的组成部分,例如利用索引来加速查询。
我的上述建议需要稍微更改您的架构以实现您的需求。看起来,对于每个文档额外牺牲几个字节并且次要代码发生变化,它会获得巨大回报。
如果您有现有数据,则可以运行Map / Reduce将组件分成新的集合并继续使用该新集合。
我希望这会有所帮助。