【问题标题】:mongo db date range query (between date range)mongodb日期范围查询(日期范围之间)
【发布时间】:2013-05-02 21:21:13
【问题描述】:

我想查找“开始日期”和“结束日期”之间的记录。我得到这个日期的记录,如“2013-05-22”、“2013-05-20”、“2013-05-10”、“2013-05-05”等。

我的收藏字段如下:

array (
  '_id' => new MongoId("518221f16541b9980d000002"),
  'userId' => '2d40981c83a37e758ced05dc325e40fa',
  'kpiId' => 'f516ed1c59e6b310c47cdfc06abb17aa',
  'dateOpt' => 'customize',
  'startDate' => '2013-05-02',
  'endDate' => '2013-05-22',
  'personalTarget' => '',
  'assignedTarget' => '100000.00',
  'singleTargetAmt' => 6666.6666666667,
  'createdOn' => '2013-05-02 13:51:05',
  'updatedOn' => '2013-05-02 13:51:05',
  'distributionMethod' => 'manual',
) 

我的查询是:

  array(
    "kpiId" => 'f516ed1c59e6b310c47cdfc06abb17aa',
        "userId" => '2d40981c83a37e758ced05dc325e40fa',
        "startDate" => array
            (
                '$gte' => '2013-05-03'
            ),
    "endDate" => array
            (
                '$lte' => '2013-05-03'
            )      
    )

它没有提供任何记录。我的查询错了吗?

【问题讨论】:

  • 文档中的字段真的是字符串而不是日期对象吗?
  • 我注意到找不到那个文件,你确定你有任何文件在03-05-2013 上吗?如果您尝试使用2013-05-02,您会得到结果吗?
  • 对于 02-05-2013 我没有得到结果。我想要 02-05-2013 和 22-05-2013 之间所有日期的结果。

标签: php mongodb date


【解决方案1】:

试试这样的

Query query = new Query(Criteria.elemMatch(
Criteria.where("startDate").lte(date)
.and("endDate").gte(date)
);

【讨论】:

  • 我有两个不同的字段和一个日期值供查询。创建日期可能会有所不同,如果我在 4 月 25 日创建此记录,则它是“2013-04-25”,因此它不起作用。
  • 他掌握了正确的 PHP 语法,而且那不是 PHP 语法
  • @priyankapatel 试试上面的方法。
  • 另外他在这里不需要$elemMatch,因为这两个字段都在根文档中,b是什么?
猜你喜欢
  • 1970-01-01
  • 2018-07-09
  • 2018-09-18
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
相关资源
最近更新 更多