如何在核心PHP中编写MongoDB查询?

时间:2016-06-18 10:31:41

标签: php mongodb

我在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"]}
                ]}
          }
    }
    ]
); 

2 个答案:

答案 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);