2012-09-20 2 views
5

mongo db에서 특정 값을 찾기 위해 검색어를 쓰는 방법. MySQL의 쿼리는 다음과 같습니다 예를 들어MongoDB/PHP .. select 쿼리 작성 방법은 무엇입니까?

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

SELECT name,age from things where id=3; 

내가 어떻게 특정 값을 선택하기 위해 PHP/MongoDB의 쿼리를 찾을 작성 궁금, 가정?

+0

http://coderwall.com/p/aymsvw –

답변

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

당신은 자신의 창조 id 필드 대신 몽고 _id를 사용할 수 있습니다. 특히 PHP 드라이버에 대한 자세한 내용은

는 : http://php.net/manual/en/mongo.sqltomongo.php 단지 몽고에 SQL에 대한 다른 좋은 링크는 온라인 PHP에서 SQL to Mongo Mapping Chart을 찾을 수동 도움이 있습니다 http://rickosborne.org/download/SQL-to-MongoDB.pdf

1

SQL to Mongo을 Mongo Statements에 쿼리를 작성할 때 참조로 사용하십시오.

1

입니다.

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"필드에 문서를 저장하지 않은 경우, 다음 몽고는 자동으로 필드를 추가 BSON 값은 고유 할 확률이 매우 높습니다. 일반적으로 '512ba941e0b975fe00000000'과 같습니다.

$collection->find(array('_id' => '512ba941e0b975fe00000000'));하면 결과가 비어 있으며 오류가 발생하지 않으며 디버깅하는 동안 매우 실망 할 수 있습니다. 문자 _id이 아닌 new MongoID()을 사용하는 것을 잊기 쉽습니다.

+0

아니, 당신은 또한 찾을 수'$ 모음 -> 사용할 수 있습니다 ((배열을 '_ ID'=> '512ba941e0b975fe00000000'));'. 문제는 없습니다. –

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);