我在mongoDB中创建了查询。在MongoChef中,此查询在不到2秒的时间内生成超过1万条记录。现在我想在PHP中执行此查询。 所以我不知道如何在php中编写查询,因为我在互联网上阅读了各种文档,但却对如何实现它感到困惑。
db.PMS.aggregate(
[
{$project:
{EventTS:1,MainsPower:1,PanelID:1}
},
{$unwind:
{path:"$MainsPower",includeArrayIndex:"arrayIndex",preserveNullAndEmptyArrays:true}
},
{ $match: { "MainsPower":{$ne:null}}},
{ $match: { "EventTS":{$gt:new Date("2016-01-01")}}},
{$project:
{MainsPower:1,
PanelID:1,
timestamp:{"$add":
[{'$subtract' : ["$EventTS",new Date("1970-01-01")]},
{"$multiply":[60000,"$arrayIndex"]}
]}
}
}
]
);
答案 0 :(得分:1)
您可以使用php官方文档中提供的一些资源。可以找到php中的sql查询到php中的mongoDB查询的映射here。 我还在我的github上有一个演示登录和注册脚本。您可以在this repo。
中查看这些内容答案 1 :(得分:0)
如果你使用MongoDB PHP Library,你应该可以做类似的事情:
$mongo = new MongoClient();
$database = $mongo->examples;
$collection = $database->PMS;
$pipeline = [
[
'$project' => [
'EventTS' => 1,
'MainsPower' => 1,
'PanelID' => 1,
]
],
[
'$unwind' => [
'path' => '$MainsPower',
'includeArrayIndex' => 'arrayIndex',
'preserveNullAndEmptyArrays' => true
]
],
...
];
$cursor = $collection->aggregate($pipeline);