MongoDB\Driver\Query 类

(mongodb >=1.0.0)

介绍

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

类概要

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

目录

添加注释

用户贡献的注释 6 条注释

maha88a
8 年前
以下是如何使用筛选器从 MangoDB 集合中检索记录的查询示例。在这种情况下,它将只返回满足筛选器 id = 2 的一条记录。

考虑以下 MangoDB 集合

<?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);
}
?>
[email protected]
6 年前
此格式将 query 返回的文档显示为 stdClass 对象。对于显示来说,这是很不错的,但是如果需要使用返回的文档及其相应字段执行某些计算,请使用此代码

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

$connection = new MongoDB\Driver\Manager("mongodb://localhost: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 对象,并且同一个对象将立即解码为关联数组,该数组可根据需要随时使用
[email protected]
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);
}
[email protected]
3 年前
# 向远程服务器构造查询并将其结果限制为最近 3 个结果

$username ="yourusername";
$password = "yourpasswort";

$manager = new MongoDB\Driver\Manager("mongodb://yourserver.com/",
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);
}
dvdogrady at gmail dot com
6 年前
你好

我只写了此注释来帮助想要使用查询运算符编写 $filter 数组的人员。

我已从 maha88a 的注释中复制了此代码,但我更改了 $filter 以便让你了解它如何与查询运算符一起使用

考虑以下 MangoDB 集合

<?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);
}
?>
Dalahimself
7 年前
如何使用值 $id 查询 MongoDb _id

<?php
$filter
=array();
$filter['_id']=new MongoDB\BSON\ObjectID($id);

$command=[
'find' => 'my_collection',
'filter' => $filter
];

$query = new MongoDB\Driver\Command($command);
?>
To Top