5

如何在 mongo db 中编写查找查询以选择某些值。例如

IN MYSQL - SELECT * from things where id=3;
IN Mongo - thingscollection->find(array("_id" => $id))

假设如果 MYSQL 查询看起来像这样,

SELECT name,age from things where id=3;

我想知道如何在 PHP/MongoDB 中编写查找查询来选择特定值?

4

5 回答 5

13
MySQL: SELECT name,age from things where id=3;  
Mongo: $db->things->find(array("id" => 3), array("name" => 1, "age" => 1));

您可能想要使用 mongo_id而不是自己创建的id字段。

有关 php 驱动程序的更多信息:http ://php.net/manual/en/mongo.sqltomongo.php 另一个仅用于 SQL 到 Mongo 的好链接是http://rickosborne.org/download/SQL-to- MongoDB.pdf

于 2012-09-20T10:46:02.457 回答
1

在 Mongo 语句中编写查询时,使用SQL 到 Mongo作为参考。

于 2012-09-20T10:43:39.830 回答
1

您可能会发现 PHP 在线手册中的SQL 到 Mongo 映射图很有帮助。

于 2012-09-20T10:59:48.223 回答
0

Yogesh 建议using the mongo _id,但这实际上比文档中的常规字段更复杂。

实现:

IN MYSQL - SELECT * from things where id=3;

使用 MongoDB 的 PHP 驱动程序,执行以下操作:

$m = new MongoClient();
$db = $m->selectDB('stuff');
$collection = new MongoCollection($db, 'things');
$collection->find(array('_id', new MongoID('3'));

如果您没有使用“_id”字段保存您的文档,那么 Mongo 会自动添加此字段,并且 BSON 值具有非常高的唯一性。它通常类似于“512ba941e0b975fe00000000”。

如果您尝试$collection->find(array('_id' => '512ba941e0b975fe00000000'));结果为空并且没有生成错误,这在调试时可能会非常令人沮丧。它很容易忘记使用new MongoID(),而不仅仅是 string _id

于 2013-03-02T04:22:30.503 回答
0
$mongo_url = 'mongodb://127.0.0.1/';
$client = new \MongoDB\Client($mongo_url);
$db_name = 'your_db_name';
$db = $client->$db_name;
$collection = $db->your_collection_name;

$where = array(
    'user_id' => 3
);
$select_fields = array(
    'name' => 1,
    'age' => 1,
);
$options = array(
    'projection' => $select_fields
);
$cursor = $collection->find($where, $options);   //This is the main line
$docs = $cursor->toArray();

print_r($docs);
于 2017-05-17T12:20:15.923 回答