4

テストの目的で、MongoDBにいくつかのオブジェクトを手動で作成する必要があります。私のクラスには、別のクラスへの参照フィールドがあります。参照されたオブジェクトはすでに存在します。

既存のオブジェクトのMongo-IDを新しいオブジェクトの値として入れようとしましたが、次のエラーが発生します。

ReferenceFieldはDBRefのみを受け入れます:['属性'])

今私の質問:これはどこで入手または見つけることができますDBRefか?


例:データベースにユーザーがいます。既存のユーザーをとして持つグループを作成したいと思います"creator"。ユーザーIDを作成者フィールドに入力すると、エラーが発生します...

編集:

このリンクMongoDB-DBRefを見つけましたが、ソリューションが機能しません...

item : {"$ref" : "fruit", "$id" : "1"}

私のコードは次のようなものです:

{ "name" : "MyGroup", "created_at" : "2011-05-22T00:46:38", "creator": { "$ref": "user", "$id": "501bd5ac32f28a1278e54435" } }

別の編集:

Mongoドキュメントでさえ、私は正しい形式を使用していると言っています... http://www.mongodb.org/display/DOCS/Mongo+Extended+JSON。しかし、まだ機能していません。

4

1 に答える 1

5

参照した質問では、ユーザーはドキュメントIDとして数値文字列を使用しています。あなたの場合、より一般的なObjectIdを使用しているように見えますが、それを文字列として挿入しています。PyMongoを使用していると仮定すると、 DBRefのプロパティにObjectIdクラスを使用することをお勧めします。$id

そのようなすべての参照が同じDBとコレクションを指すことがわかっている場合は_id、DBRefオブジェクトの代わりに手動参照(ターゲットドキュメントのを格納するだけ)を使用するのが理にかなっている場合があります。これについては、データベースリファレンスのドキュメントで詳しく説明されています。

于 2012-08-03T16:28:58.110 に答える