我是蒙戈新手。
我尝试获取文档的子文档,这是我的文档:
{
"_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"
}
我想我需要使用这些类:http://php.net/manual/en/mongocollection.aggregate.php但我没有设法将它与我的类的管理器实例一起使用:http://php.net/manual/en/class.mongodb-driver-manager.php.
PHP 手册没有展示如何将其与新的驱动程序一起使用。
有人能帮我吗?
谢谢你,美好的一天!
您不必为该任务使用聚合。
您可以使用常规查询来选择嵌入数组中的第一个匹配的子文档。
您可以通过几种方式来处理它。
$位置投影
$filter = ['_id' => new MongoDB\BSON\ObjectID("5900ab35c720b210c000032c"), 'providers.id' => new MongoDB\BSON\ObjectID("59030577c720b211dc005e9f") ];
$options = ['projection' => ['_id' => 0, 'providers.$' => 1],];
$elemMatch投影
$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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)