标签: php-mongodb

Mongodb php7,用id更新文件?

当我升级到PHP7时,我从mongo移动到mongodb扩展.我唯一无法弄清楚的是通过id更新doc.Mongo曾经使用MongoId类来解析字符串中的id,但我找不到Mongodb的任何等价物.

这就是我所处的位置,哪些不起作用

$collection->updateOne(['_id' => '567eba6ea0b67b21dc004687'], ['$set' => ['some_property' => 'some_value']]);   
Run Code Online (Sandbox Code Playgroud)

php mongodb php-mongodb

2
推荐指数
1
解决办法
4510
查看次数

php mongoDBaggregate() 返回 MongoDB\Driver\Cursor 对象而不是结果

我正在努力从 mongodb 迁移到新的 php 驱动程序,此时我不知道问题到底是什么,查询在旧驱动程序中运行良好,实际上我没有收到任何查询或 php 错误。print_r 返回聚合 fn 的结果如下 php version : 7.1.18, Zend Engine : v3.1.0, mongo: v3.4.15

> MongoDB\Driver\Cursor Object (
>     [database] => demoDb
>     [collection] => 
>     [query] => 
>     [command] => MongoDB\Driver\Command Object
>         (
>             [command] => stdClass Object
>                 (
>                     [aggregate] => app_button
>                     [pipeline] => Array
>                         (
>                             [0] => stdClass Object
>                                 (
>                                     [$match] => stdClass Object
>                                         (
>                                             [location] => stdClass Object
>                                                 (
> …
Run Code Online (Sandbox Code Playgroud)

php mongodb php-mongodb php-7.2

2
推荐指数
1
解决办法
2491
查看次数

本地字段和外国字段不工作的查找管道内的项目

我写了下面的代码行来获取查找中的一些特定字段,例如

       $pipeline = array(
            array(
                '$match' => $query
            ),
            array(
                '$lookup' => array(
                    'from' => 'studentTbl',
                    'localField' => '_id',
                    'foreignField' => 'activity_details.activityId',
                     'pipeline' => [
                        ['$project' => [ '_id' =>  1.0, 'activity_details' => 1.0] ],
                     ],   
                    'as' => 'studentsOfActivities'
                )
            ),
           ....
           ....
        );

     return $this->db->activitiesTbl->aggregate($pipeline)->toArray();
Run Code Online (Sandbox Code Playgroud)

基本上 studentTbl 有许多字段和嵌入的文档。在上面的代码中,我首先使用外部和本地字段通过查找获取,然后确定哪些字段应该投影到管道内。

上面的代码不起作用...请帮忙!!!

mongodb mongodb-php mongodb-query aggregation-framework php-mongodb

2
推荐指数
1
解决办法
3716
查看次数

为什么某些命令在mongodb currentOp中缺少'appName'?

我为我的一些项目应用了appName,但在currentOp中,某些查询缺少它.大多数情况下,计数查询都缺少它.

{
        "desc" : "conn1786739",
        "threadId" : "140671499200256",
        "connectionId" : 1786739,
        "client" : "179.22.4.3:42354",
        "active" : true,
        "opid" : -1076773120,
        "secs_running" : 6,
        "microsecs_running" : NumberLong(6928801),
        "op" : "command",
        "ns" : "dbname.members",
        "query" : {
            "count" : "memebers",
            "query" : {
                "$or" : [
                    {
                        "$and" : [
                            {
                                "condition1" : {
                                    "$gt" : 0
                                }
                            },
                            {
                                "condition1" : 0
                            },

                        ]
                    }
                ],

            },
            "readConcern" : {

            }
        },
        "numYields" : 28,
        "locks" : {
            "Global" : "r", …
Run Code Online (Sandbox Code Playgroud)

mongodb php-mongodb

2
推荐指数
1
解决办法
141
查看次数

MongoDB 聚合 PHP,按小时分组

我有以下格式的文档

{
  "_id" : ObjectId("12e123123123123123"),
  "client_id" : "12345667889",
  "resource" : "test/test",
  "version" : "v2",
  "ts" : new Date("Wed, 02 Jan 2013 15:34:58 GMT +08:00")
}
Run Code Online (Sandbox Code Playgroud)

ts是一个 MongoDate() 字段。

我正在尝试在 php 中使用 MongoDB 聚合函数按 client_id 和小时进行分组并计数使用情况以显示在表/图表中

这是我目前的尝试

$usage = $this->db->Usage->aggregate(array(array(
  '$project' => array(
    'hour' => array(
      'years' => array( '$year' => '$ts' ),
      'months' => array( '$month' => '$ts' ),
      'days' => array( '$dayOfMonth' => '$ts' ),
      'hours' => array( '$hour' => '$ts' ),
    )
  ),
  '$group' => array( …
Run Code Online (Sandbox Code Playgroud)

php mongodb php-mongodb

1
推荐指数
1
解决办法
6275
查看次数

如何使用MongoDB PHP扩展获取光标结果计数

mongoPHP扩展赞成不赞成的mongodb扩展。此扩展名与一起使用mongo-php-library

在旧扩展中,可以使用MongoCursor :: count()从光标获取结果计数。但是,新游标MongoDB \ Driver \ Cursor没有这种方法。对MongoDB执行查询后,从中获取结果数量的新方法是什么?

php mongodb php-mongodb

1
推荐指数
1
解决办法
3607
查看次数

找不到类 MongoDate - PHP 5.4

我已经添加mongodb.so了两个/etc/php5/apache2/php.ini/etc/php5/cli/php.ini如下所示

extension=/usr/lib/php5/20100525/mongodb.so
Run Code Online (Sandbox Code Playgroud)

但我仍然收到以下错误Class 'MongoDate' not found

PHP 版本 - PHP 5.4.45

以下是来自 php cli 的关于 mongodb 扩展的信息

php -i | grep -i mongodb
mongodb
MongoDB support => enabled
MongoDB extension version => 1.2.5
MongoDB extension stability => stable
mongodb.debug => no value => no value
Run Code Online (Sandbox Code Playgroud)

下面是phpinfo()在 apache2 下运行的for php的输出

在此处输入图片说明 有人可以让我知道如何摆脱这个错误吗?

php php-mongodb

1
推荐指数
1
解决办法
4438
查看次数

MongoDB 批量写入操作收到异常“等待复制超时”

我们有两台 MongoDB 服务器,一台是主服务器,另一台配置为副本。

我们使用 PHP 将更新列表批量写入 MongoDB。从服务器日志来看,我们在服务器日志中做了一些少量的“等待复制超时”的异常。

  1. 异常的原因可能是什么?两台服务器之间的网络稳定。
  2. 当我们收到“等待复制超时”的异常时,我们可以假设批量写入操作已成功将目标文档更新到主服务器吗?

PHP代码的批量写入部分:

 try {
            $manager = new MongoDB\Driver\Manager("mongodb://" . DB_HOST);
            $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 10000);
            $result = $manager->executeBulkWrite($DBName . '.' . $collection, $bulk, $writeConcern);
            return $result;
        } catch (Exception $ee) {
            AppendToLogFile(ERROR_Internal_Error, 'Script:' . __FILE__ . ', LINE:' . __LINE__ . ',$ee:' . $ee->getMessage());
            continue;
        }
Run Code Online (Sandbox Code Playgroud)

谢谢!

mongodb mongodb-query php-mongodb

1
推荐指数
1
解决办法
6025
查看次数