私は MongoDB を学んでおり、MongoDB データベースに保存されているデータは JSON と非常によく似た形式であったため、jQuery のgetJSON()
メソッドから直接 MongoDB にクエリを実行できることを望んでいました。
driver
ただし、アプリケーションからデータベースにアクセスするには、MongoDB と a が必要なようです。というわけで、当面は PHP ドライバーを使用します。
フィールドの を返そうとしてvalue
いcontent
ます:
MongoDB ドキュメント
{
"_id": ObjectId("34576347347"),
"content": "here is some content",
"field2": {
"subfield1": {
"0": "sf1v0",
"1": "sf1v1",
"2": "sf1v2"
},
"subfield2": "value 2"
},
"field2": "value 3"
}
PHP
<?php
$dbhost = 'username:password@127.x.xx.x:27017/';
$dbname = 'dbname';
$m = new MongoClient("mongodb://$dbhost");
$db = $m->$dbname;
$collection = $db->myCollection;
$query = $collection->find(array("field2.subfield2" => "value 2"));
header("Content-type: application/json");
echo json_encode($query);
?>
jQuery
$.getJSON("http://path/to/mongo.php", {cid: href, format: 'json'}, function(results){
$("#my_div").html(results[0].content);
}
いくつかのことを「取得」する必要があると思います:
PHP クエリから返されるもの:
$query = $collection->find(array("field2.subfield2" => "value 2"));
MongoDB の用語は を返すと思いますが、それは
cursor
PHP 配列ですか、JSON データですか、それとも何か他のものですか?getJSON()
必要なデータを返すためにコードで行う正しい「呼び出し」は何ですか?現時点で、Firebug は次のように表示しています。
TypeError: results[0] is undefined
アップデート
getJSON()
コードを次のように変更しました。
$("#my_div").html(results.content);
そして今、私はエラーを取得しませんが、Firebug から次のようになります:
[応答] タブに表示される内容: {}
JSON タブの表示: このオブジェクトに表示するプロパティはありません。