从mongodb datetime查询中获取星期几

时间:2013-09-20 13:57:06

标签: mongodb pymongo

我正在构建一个数据库,我可能想查询一周中的某一天。是否可以使用mongodb在datetime(或utc timestamp)字段中查询一周中的天数?

喜欢的东西;获取每个具有日期时间的对象。

如果不可能,则替代方案似乎在集合中创建虚拟变量,以显示一周中的哪一天。最好我只想查询datetime对象,因为这会使数据库更小。

2 个答案:

答案 0 :(得分:1)

我能想到三种解决方案:

  1. 您的解决方案:创建一个额外的“day_of_week”字段,可以是int或字符串,然后查询此字段而不是datetime字段。
  2. 查询集合中的所有内容,然后在客户端按星期几过滤结果。
  3. 使用$ where,传递一个调用date.getDay()的javascript函数。例如,{$where: function () { return this.date.getDay() == 5; }}用于获取星期五的每个日期。
  4. 解决方案#2会在客户端的pymongo中调用datetime.date.weekday()。此方法的缺点是集合中的每个文档最终都将通过线路发送,这可能会增加不必要的网络负载。然而,它比#1更好,因为它更节省空间,并且您没有重复的信息来保持同步。解决方案#3没有这些问题,但$ where慢,因为它要求服务器创建JavaScript执行上下文而不能使用索引。

答案 1 :(得分:0)

Pymongo可以将Mongo BSON时间戳字段作为python日期时间返回:http://api.mongodb.org/python/current/api/bson/timestamp.html

从那里你可以致电datetime.date.weekday() http://docs.python.org/2/library/datetime.html#datetime.date