这是我在mongodb中的查询
db.order.find ({"ublExtensions.ublExtensions.extensionContent.Metadata
.ModificationTime": "2012-02-04T01:58:27.861Z"});
Run Code Online (Sandbox Code Playgroud)
它仅为特定时区获取结果.modificationTime每天都在变化.我有一个要求,我需要选择y'day更新的数据...意味着(sql中的sysdate -1)一天的数据.
我怎样才能在mongodb中实现这一目标?请注意我的日期是一个字符串类型,我有一个约束,我无法改变它.有人建议使用ISODate.
请帮助解决此问题.
Mongodb以bson格式存储其日期对象,如:{$ date:1329415205151}
如果您决定以字符串格式存储它,则客户端负责过滤和处理此值,因为mongo将其视为字符串.您可以通过引用另一个SO问题将您的字符串转换为日期对象:如何将MongoDB中的属性从文本转换为日期类型?
它被广泛推荐以UTC格式存储所有日期,或者可能与本地数据中心相关的一致时区,然后将日期值转换为客户端上的正确本地时区.
您可以存储所需的任何日期值.日期的值和日期的格式是两个单独的问题.如果您的约束要求您在文档中存储基于字符串的日期格式,则建议在更新时也存储$ date对象.
我建议将日期作为日期或ISODate存储在MongoDB上,因为它可以减轻你的生活:)
如果不可能,那么在客户端(编程语言特定的驱动程序),您应该能够将字符串解析为适当的日期类型.
但是,如果您需要在mongo shell上运行查询,则可以遵循与Mongo Cookbook中描述的策略类似的策略
1)使用今天的日期和昨天的日期创建一个var:
>var today = new Date();
>today
ISODate("2012-11-26T22:12:03.870Z")
>var yesterday = new Date()
>yesterday.setDate(today.getDate() - 1)
>yesterday
ISODate("2012-11-25T22:12:03.870Z")
Run Code Online (Sandbox Code Playgroud)
2)在24小时内形成查询文件的查询
>db.order.find( { "ublExtensions.ublExtensions.extensionContent.Metadata.ModificationTime" : { $gte : yesterday, $lt : today } } )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20764 次 |
| 最近记录: |