2011-12-22 4 views
0

Mongoの地図の出力/減らすようにDBに格納されている:Doctrine + Mongo:mongoの埋め込みドキュメントにマップするIDを定義する方法は?

{ {_id:{ "groupby1": "フィールド1"、 "groupby2": "フィールド2"}、 値:{ "valuefield1": "VALUE1"、 "valuefield2": "値2"}} }

ドクトリン文書で、どのように我々は、埋め込まれた文書にマップするidフィールドを定義することができますか?私はコレクションまたはEmbedOneとしてそれを定義した場合

/** * @MongoDB\EmbedOne ,(target="Articles\Id", strategy='none')
*/

教義は、文書は「すべての文書は、識別子/主キーを持っている必要があります」IDまたは主キーを持っていないという例外をgenereates

私がidと定義すると、配列はスカラーフィールドにロードしようとしているMongoカーソルに失敗しています。

これを解決する方法の指針はありますか?

ありがとうございます!

答えて

0

ドキュメントのキーとしてGROUPBYフィールドをデフォルトを使用し、保存するために、その最も簡単に_idフィールドにカスタムIDを設定しているように思え:

{ 
    _id: ObjectId("xxx") 
    "groupby": [ 
     "field1", 
     "field2" 
    ], 
    "value": [ 
     "value1", 
     "value2" 
    ] 
} 
+0

EMITはこのようなものです。 'EMIT({groupby1:this.groupby1、groupby2:this.groupby2}、{ valuefield1:this.valuefield1、valuefield2:this.valuefield2});' 私がもしわからない、他の何かにIDを変更した場合map reduceは正しく動作します。すべてのポインタ? – Ramesh

+0

ああ、それは外側の文書に_idがないためです。あなたはそれを行う方法を教義人に尋ねなければならないかもしれませんが、emit関数のように、何らかのIDを含める必要があります。その場合、mep reduce出力を組み込み文書にすることはできません。 –

関連する問題