在PHP中对新的MongoDB驱动程序类使用聚合方法
我是mongo的新手 我尝试获取文档的子文档,以下是我的文档:在PHP中对新的MongoDB驱动程序类使用聚合方法,php,mongodb,Php,Mongodb,我是mongo的新手 我尝试获取文档的子文档,以下是我的文档: { "_id" : ObjectId("5900ab35c720b210c000032c"), "name" : "B 1", "providers" : [ { "id" : ObjectId("59030550c720b211dc005e9e"), "name" : "F 1" }, {
{
"_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结合使用。你可以在这里找到一个例子。如果你有特殊的问题,请考虑创建一个单独的问题。