当前位置: 首页 > 知识库问答 >
问题:

在mongodb中查找日期

琴元凯
2023-03-14

由于我意识到不能比较字符串格式的($gt、$gte、$lt、$lte等)日期,所以我尝试学习如何使用UTCDateTime。我无法在带有mongoDb\bson\utcdateTime的集合中找到日期

我在试着用这个代码。

require '../vendor/autoload.php';
$client = new MongoDB\client("mongodb://localhost:27017");
$database = $client->db;
$center = $database->collection;

$document = $center->find(array("date" => new MongoDB\BSON\UTCDateTime("2018-03-22T09:03:07.147Z")));
foreach ($document as $doc){
        var_dump($doc);
}
"_id" : ObjectId("5ab3714bb57dce13040024c3"),
    "name" : "16floor",
    "date" : ISODate("2018-03-22T09:03:07.147Z"),
    "data" : [ 
        {
            "value" : 169
        }, 
        {
            "value" : 200
        }, 
        {
            "value" : 80
        },
        .
        .
        .

据我所知,我也可以找到带有时间戳的日期,但我正在寻找带有UTCDateTime字段的搜索。

共有1个答案

杨飞
2023-03-14

根据UTCDateTime::__Construct文档,作为参数的字符串应该包含Unix时代以来的毫秒数(它只适用于32位系统)。要使代码正常工作,需要传递\DateTimeInterface的实例:

new MongoDB\BSON\UTCDateTime(new \DateTimeImmutable("2018-03-22T09:03:07.147Z"))
 类似资料:
  • 如果日期相同,则使用进行查询将无法正常工作。它更像是。 但如果我给query param加上1秒,它就会工作。 下面是示例查询; 我有一个文档,它是时间戳。 此查询与日期为的文档相匹配,如果我将查询时间戳增加一个,如。 我正在使用mongo控制台,但我在php中遇到了与MongoDate相同的问题 编辑:查询的输出 edit2:问题是mongo的php扩展。它记录了“当文档发送到/从数据库发送时,

  • 有人能帮我吗?我正在使用$lookup在MongoDB中加入以获取日期在日期“X”和日期“Y”之间的所有订单,chef_id是“P”。“日期”部分有问题,没有提供日期的数据。但是当我在单个查找查询中使用它时,它可以正常工作并在日期之间提供数据。但是当我使用$lookup申请加入时,它不会提供数据。这是我的查询 谁能帮帮我。 我的收藏在这里“订购”收藏 这是我的用户收藏 }

  • 我正在使用MongoDB搜索包含列表列表的元素,其中列表中至少有一个项目与搜索参数匹配。 这是我目前拥有的结构的一个例子。 我想搜索数据列表中值为“绿色”的所有项目。 我目前有这个: 但是,不会返回任何结果。

  • 问题内容: 我正在尝试在mongodb中执行查询日期,但结果始终为空。我的查询如下: //变量resultaMongo返回空。 Obs:我也尝试不使用.isoformat(),当我直接放入mongodb时,只有添加ISODate才返回结果。因此不会返回结果: 更重要的是,如果您编辑返回: 这是数据库中的记录序列: 如果我打印python的json变量,则会看到类似以下内容的内容: 我的Mongnd

  • 问题内容: 我有此查询以获取月结果。但是我想得到今天的结果。 做这个的最好方式是什么? 问题答案: 您的开始日期对象应将当前日期时间设置为(毫秒精度),并将今天的时间设置为: 然后像往常一样在您的MongoDB查询运算符中传递修改后的日期对象: 如果您正在使用 momentjs 库,则可以通过在当前当前日期对象上使用 and 方法,并将字符串作为参数传递来实现:

  • 问题内容: 我在Java中有三个约会:a,b,c。这些日期中的任何一个或所有日期都可以为空。在没有大量if- else块的情况下确定a,b,c中最早日期的最有效方法是什么? 问题答案: 无法避免空值检查,但是通过一些重构,您可以使其变得更轻松。 创建一个安全地比较两个日期的方法: 然后结合调用: 实际上,您可以将此方法用作任何通用方法: