在PHP中对新的MongoDB驱动程序类使用聚合方法

在PHP中对新的MongoDB驱动程序类使用聚合方法,php,mongodb,Php,Mongodb,我是mongo的新手 我尝试获取文档的子文档,以下是我的文档: { "_id" : ObjectId("5900ab35c720b210c000032c"), "name" : "B 1", "providers" : [ { "id" : ObjectId("59030550c720b211dc005e9e"), "name" : "F 1" }, {

我是mongo的新手

我尝试获取文档的子文档,以下是我的文档:

{
    "_id" : ObjectId("5900ab35c720b210c000032c"),
    "name" : "B 1",
    "providers" : [ 
        {
            "id" : ObjectId("59030550c720b211dc005e9e"),
            "name" : "F 1"
        }, 
        {
            "id" : ObjectId("59030577c720b211dc005e9f"),
            "name" : "F 2"
        }
    ]
}
我想得到这个子文档:

{
    "id" : ObjectId("59030577c720b211dc005e9f"),
    "name" : "F 2"
}
我想我需要使用这些类:但我没有设法将其用于类的manager实例:

PHP手册没有说明如何在新驱动程序中使用它

有人能帮我吗


谢谢你,祝你愉快

任务不必使用聚合

可以使用常规查询来选择嵌入数组中的第一个匹配子文档

你可以用两种方法来解决这个问题

投影

$filter = ['_id' => new MongoDB\BSON\ObjectID("5900ab35c720b210c000032c"), 'providers.id' => new MongoDB\BSON\ObjectID("59030577c720b211dc005e9f") ];

$options = ['projection' => ['_id' => 0, 'providers.$' => 1],];
$filter = ['_id' => new MongoDB\BSON\ObjectID("5900ab35c720b210c000032c")];

$options = [
        'projection' => ['_id' => 0, 'providers' => ['$elemMatch'=> ['id' => new MongoDB\BSON\ObjectID("59030577c720b211dc005e9f")]]],
    ];
投影

$filter = ['_id' => new MongoDB\BSON\ObjectID("5900ab35c720b210c000032c"), 'providers.id' => new MongoDB\BSON\ObjectID("59030577c720b211dc005e9f") ];

$options = ['projection' => ['_id' => 0, 'providers.$' => 1],];
$filter = ['_id' => new MongoDB\BSON\ObjectID("5900ab35c720b210c000032c")];

$options = [
        'projection' => ['_id' => 0, 'providers' => ['$elemMatch'=> ['id' => new MongoDB\BSON\ObjectID("59030577c720b211dc005e9f")]]],
    ];
您将使用executeQuery运行常规查询

$query = new \MongoDB\Driver\Query($filter, $options);

$cursor = $manager->executeQuery(dbName.collectionName, $query); 

谢谢@Veerambut我们如何将聚合与新的php mongo db driversNp结合使用。你可以在这里找到一个例子。如果你有特殊的问题,请考虑创建一个单独的问题。