2012-02-29 11 views
3

PHPのmongodbからデータを取得し、テーブルのフィールドを表示します。私はフィールドに送信フィールドの順序は、私はそれらを表示するフィールドのオット順序に影響を与えていない場合、例えば、私が設定した順序でのMongoDBからPHPのフィールドを取得することができます:特にmongodbフィールドをPHPで取得する

$cursor = static::getMongoCollection(false)->find($query)->fields($fields); 

例えば、それはで表示します私が使用した場合と同じ順序は今も問題:

$fields = array("field1" => 1, "field2" => 1, "field3" => 1) 

または私は別の順序でフィールドを表示するには、自分のアプリケーションに必要

$fields = array("field3" => 1, "field2" => 1, "field1" => 1) 

。それを作る方法はありますか?

答えて

2

PHPドライバはちょうどMongoDBのは、それらを送信どんな順序でのMongoDBからフィールドを返します。したがって、返すフィールドをどのように選択するかに関係なく、返されたデータは変更されません(もちろん、フィールドリストを変更しない限り)。返された後、結果を自分で注文するのはなぜですか?

+0

アダム、私が定義するようにmongodbからフィールドを得ることができないということですか?たとえば、SQLでは、SELECT fields1、fields2、fields3、SELECT fields3、fields2、fields1のような順番でフィールドを取得できます。 – Oleg

+0

データを取得するためにフィールドの順序を設定することができます。それ以外の場合、返されたデータのすべての行を表示するときなどに処理する必要があります。 – Oleg

+0

たとえば、フィールドが必要な順番で返された場合、フィールドを表示するだけで済みます。 – Oleg

2

おそらくksortが必要ですか?

参照:http://php.net/manual/en/function.ksort.php

+0

私が投稿で言ったように、私は順序付けられた$フィールドで渡しますが、フィールドの順序には影響しません。私は渡すフィールドの2つの配列の例を挙げましたが、後者の場合はフィールドの順序は変わりません。 – Oleg

+0

ksortは機能しません。 OPは、要求された順序でMongoDbクエリの結果を取得しようとしています。 MySQLでは 'SELECT col_a、col_z、col_y、col_b FROM table'を実行すると、結果はほぼ確実に選択された順(col_a、col_z、col_y、col_b)になります。 MongoDbの問題は、必ずしも要求された順序で列を返すわけではなく、 'ksort'が本当に助けにならないことです。 –

関連する問題