2024 年 PHP 开发者大会日本站

MongoDB\Driver\Query 类

(mongodb >=1.0.0)

简介

MongoDB\Driver\Query 类是一个值对象,表示数据库查询。

类概要

final class MongoDB\Driver\Query {
/* 方法 */
final public __construct(array|object $filter, ?array $queryOptions = null)
}

目录

添加笔记

用户贡献笔记 5 条笔记

maha88a
8 年前
这是一个使用过滤器从 MongoDB 集合中检索记录的 Query 示例。在本例中,它将只返回一个满足过滤器 id = 2 的记录。

考虑以下 MongoDB 集合

<?php
/* my_collection */

/* 1 */
{
"_id" : ObjectId("5707f007639a94cbc600f282"),
"id" : 1,
"name" : "Name 1"
}

/* 2 */
{
"_id" : ObjectId("5707f0a8639a94f4cd2c84b1"),
"id" : 2,
"name" : "Name 2"
}
?>

我使用以下代码
<?php
$filter
= ['id' => 2];
$options = [
'projection' => ['_id' => 0],
];
$query = new MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('db_name.my_collection', $query); // $mongo 包含 MongoDB 的连接对象
foreach($rows as $r){
print_($r);
}
?>
yatiny3007 at gmail dot com
7 年前
按 _id 查找

$mongo = new \MongoDB\Driver\Manager('mongodb://root:[email protected]/db');

$id = new \MongoDB\BSON\ObjectId("588c78ce02ac660426003d87");
$filter = ['_id' => $id];
$options = [];

$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('db.collectionName', $query);

foreach ($rows as $document) {
pr($document);
}
tiwaritusharudayan at gmail dot com
6 年前
此格式将查询返回的文档显示为 stdClass 对象。出于显示目的,这样很好,但如果需要使用返回的文档及其相应的字段执行某些计算,请使用此方法

------------------------------------代码片段-----------------------------------

$connection = new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");

$filter = ["name"=>"insert_desired_name_here"];
/* 以下条件以及类似的条件也适用 */

$filter = ["age"=>["$gt"=>"18"]]; /*/

$options = []; /* 在此处添加所需的选项,如果您需要任何选项 */

$query = new MongoDB\Driver\Query($filter,$options);

$documents = $connection->executeQuery('trial.trial' /*dbname.collection_name*/,$query);

foreach($documents as $document){
$document = json_decode(json_encode($document),true);
echo $document[name];
}

--------------------------------------------------------------------------------------

foreach循环内的第一个可执行语句将返回的stdClass对象编码为json对象,然后立即解码为关联数组,然后可以根据需要使用。
dvdogrady at gmail dot com
7 年前
你好

我只是写下这篇笔记来帮助那些想在其中使用查询运算符编写 $filter 数组的人。

我从 maha88a 的笔记中复制了这段代码,但我更改了 $filter 以让您了解它如何与查询运算符一起工作。

考虑以下 MongoDB 集合

<?php
/* my_collection */

/* 1 */
{
"_id" : ObjectId("5707f007639a94cbc600f282"),
"id" : 1,
"name" : "Name 1"
}

/* 2 */
{
"_id" : ObjectId("5707f0a8639a94f4cd2c84b1"),
"id" : 2,
"name" : "Name 2"
}
?>

我使用以下代码
<?php
// 此 $filter 将返回任何等于 2 的 id,但如果我们想要所有大于 0 的 id 呢?
// $filter = ['id' => 2];
// 这就是我们如何做到这一点。
$filter = ['id' => ['$gt' => 0]]
$options = [
'projection' => ['_id' => 0],
];
$query = new MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('db_name.my_collection', $query); // $mongo 包含 MongoDB 的连接对象
foreach($rows as $r){
print_($r);
}
?>
jaimegarbanzo at gmail dot com
3 年前
#构建到远程服务器并查询并将结果限制为最新的 3 个结果

$username ="你的用户名";
$password = "你的密码";

$manager = new MongoDB\Driver\Manager("mongodb://你的服务器地址/",
array("username" => $username, "password" => $password )
);

#设置你的选项和过滤器
$filter = [];
$options = ['sort'=>array('_id'=>-1),'limit'=>3]; # limit -1 从最新到最旧

#构建查询
$query = new MongoDB\Driver\Query($filter, $options);

#执行
$cursor = $manager->executeQuery('resultdb.test', $query);

echo "正在输出结果<br>";
foreach ($cursor as $document) {
var_dump($document);
}
To Top