1

我正在构建一个数据库,我可能想在其中查询一周中的某一天。是否可以使用 mongodb 在日期时间(或 utc 时间戳)字段中查询星期几?

就像是; 获取日期时间为星期一的每个对象。

如果不可能,那么替代方法似乎会在集合中创建虚拟变量,以显示它是星期几。最好我只想为此查询 datetime 对象,因为这会使数据库更小。

4

2 回答 2

1

我能想到的解决方案有以下三种:

  1. 您的解决方案:创建一个额外的“day_of_week”字段,一个 int 或 string,然后查询该字段而不是 datetime 字段。
  2. 查询集合中的所有内容,然后在客户端按星期几过滤结果。
  3. 使用 $where,传递一个调用 date.getDay() 的 javascript 函数。例如,{$where: function () { return this.date.getDay() == 5; }}用于获取星期五的每个日期。

解决方案#2 会datetime.date.weekday()在客户端调用 pymongo。这种方法的缺点是集合中的每个文档最终都将通过网络发送,这可能会增加不必要的网络负载。但是,它比 #1 更好,因为它更节省空间,并且您没有重复的信息来保持同步。解决方案#3 没有这些问题,但是 $where 很慢,因为它需要服务器创建 JavaScript 执行上下文并且不能使用索引。

于 2013-09-20T14:27:50.460 回答
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

于 2013-09-20T14:15:32.197 回答