如何在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中编写查找查询以选择特定值?
答案 0 :(得分:12)
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
答案 1 :(得分:1)
在Mongo语句中编写查询时使用SQL to Mongo作为参考。
答案 2 :(得分:1)
您可能会发现PHP在线手册中的SQL to Mongo Mapping Chart很有帮助。
答案 3 :(得分: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()
而不仅仅是字符串_id
很容易。
答案 4 :(得分: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);