1

オファーのコレクションと、多くのフィールドと並べ替えを含む複雑なクエリがあります。タスクは、クエリ配列と現在のドキュメント ID のみを持つクエリ結果で前と次のドキュメントを見つけることです。そこで、並べ替えを使用してクエリを実行し、2 つの ID を返す JavaScript 関数を作成しています。問題は、php クエリ配列を正しい JavaScript オブジェクトに変換することです。

たとえば、次のようなものです。

$query = array('city' => new MongoId('...'), 'price' => array('$gt' => 100000), ...);
$sort = array('price' => -1);
$code = new MongoCode("function findPrevNext() { db.offer.find($query).sort($sort).forEach(function(obj){ ... }) }");

どうすればそのような変換を行うことができますか?

4

3 に答える 3

1

で実行する場合は、パラメータをPHP >= 5.3.0使用json_encodeして利用できoptionsます。

json_encode($array, JSON_FORCE_OBJECT);

JSON_FORCE_OBJECT

非連想配列が使用されている場合は、配列ではなくオブジェクトを出力します。出力の受信者がオブジェクトを期待していて、配列が空の場合に特に便利です。

于 2012-12-13T04:39:47.377 に答える
1

JavaScript でこのデータを読み取るには、PHP からエコーされた JSON に対して JavaScript の eval() 関数を実行します。

編集: PHP での json_encode() の使用法について議論した別の回答がここにありました。

配列を JSON に変換するには、次のようにします。

json_encode($my_array);

そのデータを JavaScript オブジェクトに解析するには、次のようにします。

var myObject = eval(jsonStringFromPHP);
于 2012-11-16T00:12:19.803 に答える
0

変換を使用する必要はまったくありません。標準ツールを使用してすべてを実行できます。

$code = 'function findNext(query, sort, current) { ... }';
$result = $mongo->command(array('$eval' => new MongoCode($code), 'args' => array($query, $sort, new MongoId($offer)), 'nolock' => true));
于 2012-11-16T21:35:33.703 に答える