0

私は、MongoIdとしてidフィールドを持つymlマッピングに次のユーザードキュメント設定を持っています。私はデータを投影するために集計ビルダーを使用する必要があるユースケースがあります。結果が利用可能になると、ドキュメント_idはMongoIdオブジェクトとして返されます。ObjectIdを使ったDoctrine mongodb-odm集約ビルダークエリ

誰も_idフィールドをMongoIdではなく文字列を返す方法を知っていますか? YMLで

ドキュメントのマッピング:

UserDocument: 
    fields: 
     _id: 
      id: true 
     username: 
      type: string 

集計クエリ:

$ab = $dm->createAggregationBuilder('UserDocument'); 
$ab->project() 
    ->includeFields([ 
     'username', 
    ]); 
$users = $ab->execute(); 

結果:

{ 
    "_id": [], 
    "username": "user" 
} 

おかげで

+0

私は_idフィールドをMongoIdオブジェクトとして返すと誤っていますが、代わりに文字列にしたいと思います。再度、感謝します。 – Billiam

答えて

0

結果をINGのあなたがjson_encode()あると仮定すると?空の配列として表示される理由は、json_encodeがオブジェクトを直列化する方法に起因します。

JMSのようなものを使用して出力をシリアル化していない場合は、手動でそのフィールドのタイプを強制する必要があります。あなたはそれを除外しない限り、_idフィールドが含まれている$プロジェクト演算子を使用した場合、デフォルトで

foreach ($results as &$v) { $v['_id'] = (string) $v['_id']; }

:最も簡単な解決策は、あなたの結果を反復処理し、文字列化されたバージョンに値を設定することです。

+0

答えをありがとう。私は文字列としてIDを返す集約ビルダーを構築する方法を探していました。より多くの研究をした後、現在のmongodb版では方法はありません。 – Billiam

関連する問題