【问题标题】:Check if value (string) exist in Mongo DB query in PHP 7检查 PHP 7 的 Mongodb 查询中是否存在值(字符串)
【发布时间】:2018-01-09 21:40:21
【问题描述】:

我需要检查 PHP7 的 MongoDB 查询中是否存在字符串。在过去,这很容易:

// Trying to find $username

$dbserver = new MongoClient();
$db = $dbserver->databasename;
$collection = $db->collectionname;
$queryDbFind = $collection->findOne(array("user" => $username));
if(empty($queryDbFind[$username])){
    echo "empty";
} else {
    echo "not empty";
};

现在有了新的 PHP 驱动程序,我在其中执行如下查询:

$db = new MongoDB\Driver\Manager("mongodb://localhost:27017")
$query1 = new MongoDB\Driver\Query(['user' => $username], ['limit' => 1, 'projection' => ['user' => 1, '_id' => 0]]);
$dbread1 = $db->executeQuery('goodcv.userbase', $query1);

这就是我卡住的地方。我得到了对象,但无法检查该对象中是否存在 $username。

我试过了:

$result1 = $dbread1->toArray();
if(empty($result1->user)){
        echo "user exist";
    } else {
        echo "user does not exist";
    };

不工作:( 返回结果的唯一方法是:

foreach($result1 as $row){
    echo $row->user;
};

但这不是正确的做法吗?

【问题讨论】:

    标签: mongodb mongodb-query php-7


    【解决方案1】:

    如果你正在使用this mongo 库和this PECL,那么你应该使用 Collection 对象的方法,就像你之前所做的一样 ($collection->findOne(...))。你用的是什么驱动???

    【讨论】:

    • 您好埃里克,感谢您的回复!我使用这个驱动程序:link 它不再支持 findOne() 命令(据我所知)。您运行查询命令(新的 MongoDB\Driver\Query)并在过滤器中指定要查找的内容,并在选项中指定要返回的文档数量、字段等。
    • 我了解到旧版驱动程序不再适用于 PHP 7。
    • 你需要使用我链接的驱动。它是 Mongo for PHP 的官方驱动程序,它支持 PHP 7(参见 PECL 链接)。然后你可以使用 findOne。编辑:这是同一个链接?那我不知道你在做什么。
    • 我现在明白了。我应该更仔细地阅读。我有驱动程序,但没有您在第一个链接中提供的库。我正在使用 XAMPP 并且没有作曲家(没有管理员权限)。你能告诉我如何手动安装库吗?我下载了这个包,我应该在 XAMPP/PHP 下的某个地方复制“src”文件夹吗?再次感谢您!
    • 复制项目根目录中的 src 文件夹并从 PHP 文件链接库。我不记得您需要包含的确切文件是什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 2018-07-24
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多