2012-09-20 3 views
5

。例えばMongoDB/PHP .. selectクエリを書くには?特定の値を選択するためには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

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ドライバの詳細については

:ちょうどモンゴにSQLのhttp://php.net/manual/en/mongo.sqltomongo.php 他の良いリンクはあなたがPHPからSQL to Mongo Mapping Chartはオンラインマニュアル役に立つかもしれませんhttp://rickosborne.org/download/SQL-to-MongoDB.pdf

1

です。

0

ヨーゲッシュは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'));にしようと

は、結果は空であり、エラーはデバッグ中、非常にイライラすることができ、生成されません。それは単に文字列_idnew 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); 
関連する問題