当前位置: 首页 > 知识库问答 >
问题:

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

司马弘益
2023-03-14

我是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"
}

我想我需要使用这些类:http://php.net/manual/en/mongocollection.aggregate.php但我没有将它用于我的manager类实例:http://php.net/manual/en/class.mongodb-driver-manager.php.

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

有人能帮帮我吗?

谢谢你,祝你愉快!

共有1个答案

毛正浩
2023-03-14

您不必为任务使用聚合。

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

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

位置投影

$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); 
 类似资料:
  • 我开始在我的应用程序中使用MongoDB。我正在使用Robo3T学习和测试查询,现在,我正在将查询翻译成C#。 我对蒙古机器人3T的质疑 在Robo 3T上运行上述脚本,其检索到以下结果: 现在,我试图在我的. NET MVC项目上重现这个结果,我面临着将子字符串转换为C#的困难。 C#代码 这种方式很好,但是,它是按整个字符串日期分组的,我想按短字符串日期分组,如:“2019-03-01”。 我

  • 有人能给我举个例子,说明如何使用PHPs新驱动程序计算MongoDB集合中的文档数吗(http://php.net/manual/en/set.mongodb.php) 所有示例似乎都在使用旧的驱动程序或库!

  • 我想在Mongo 3.2中执行聚合,如下所述,但在Java中: https://docs.mongodb.org/master/reference/operator/aggregation/lookup/#pipe._S_lookup 目前,我的java查询对象非常简单: 除了按employeId进行筛选外,我还想加入公司的此集合(其中employee.company\u id=company.i

  • 我有一个包含联系人的集合,每个联系人文档都有和属性。 现在我想使用Java和版本3.2中的MongoDb Java驱动程序查询数据库。 谢谢。

  • 使用新的mongoDB驱动程序:https://github.com/mongodb/mongo-php-driver和新的php库:https://github.com/mongodb/mongo-php-library我得到了“授权失败”,试图执行一个简单的查找()查询。 在下面的代码中,连接字符串遵循模式mongoDB://user:password@mongoinstance: port/

  • 我想使用PHP和MongoDb,但我不能为PHP配置新的MongoDb驱动程序。我已经测试了老MongoDb驱动程序(php_mongo.dll)它的工作正常。 我为配置新的MongoDb驱动程序所做的步骤: 1] 下载了最新的mongodb驱动程序(php_mongodb-1.3.1-7.1-ts-vc14-x64.zip)。 2] 复制了php_mongodb。两个目录下的dll,以确保安全: