Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php mongo查询中将unix时间戳转换为mongodb日期_Php_Mongodb - Fatal编程技术网

如何在php mongo查询中将unix时间戳转换为mongodb日期

如何在php mongo查询中将unix时间戳转换为mongodb日期,php,mongodb,Php,Mongodb,等效的mongo php查询是什么$时间是具有php unixtimestamp的文档的文件 db.collection.aggregate({$project:{$year:{$year:ISODate($time“*1000)}}}}})到目前为止您尝试了什么,您正在使用php Mongo库吗 下面是一个带有时间戳的示例: $collection = $mongoClient->your_collection->your_type; $pipeline = [ [

等效的mongo php查询是什么$时间是具有php unixtimestamp的文档的文件


db.collection.aggregate({$project:{$year:{$year:ISODate($time“*1000)}}}}})

到目前为止您尝试了什么,您正在使用php Mongo库吗

下面是一个带有时间戳的示例:

$collection = $mongoClient->your_collection->your_type;
$pipeline = [
    [
        '$project' => [
            'year' => [
                '$year' => new \MongoDate($timestamp)
            ],
        ],
    ],
];

$results = $collection->aggregate($pipeline);

采用这种方法,通过操作符将历元日期以毫秒为单位添加到时间戳中(这是时间字段上1000秒的另一个操作的结果),结果将是自历元起日期毫秒的部分:

db.collection.aggregate([    
    {
        "$project": {
            "year": {
                "$year": {
                    "$add": [ new Date(0), { "$multiply": [ "$time", 1000 ] } ]
                }
            }
         } 
    }
]);
等效的PHP语法如下所示:

$collection->aggregate([
    [
        "$project" => [
            "year" => [
                "$year" => [
                    "$add": [ new MongoDate(0), [ "$multiply": [ "$time", 1000 ] ] ]
                ]
            ]
        ]
    ]
]);

不能将函数注入聚合管道。只能使用实际操作员。可以传入外部值,但外部方法无法对管道值进行操作。@Kiwi我也尝试了同样的方法,但不幸的是Blakes是对的,我们无法将函数注入聚合管道。另外,$timestamp是mongo文档的关键。