1

私はmongokitを試していましたが、問題が発生しています。スキーマに存在しないフィールドをオンザフライで追加できると思ったのですが、ドキュメントを保存できないようです。

コードは次のとおりです。

from mongokit import *

connection = Connection()

@connection.register
class Test(Document):
    structure = {'title': unicode, 'body': unicode}

Python シェルの場合:

test = connection.testdb.testcol.Test()
test['foo'] = u'bar'
test['title'] = u'my title'
test['body'] = u'my body'
test.save()

これは私に

StructureError: unknown fields ['foo'] in Test

常に存在するフィールドのコアを持っているアプリケーションがありますが、どの新しいフィールドが必要になるかを事前に予測することはできません。基本的に、この場合、必要なフィールドを挿入するのはクライアント次第です。彼が送信したものは何でも受信し、自分のことを行い、mongodb に保存します。

しかし、すべてのドキュメントに共通するコア フィールドがまだあるので、それらを入力して検証するとよいでしょう。

これをmongokitで解決する方法はありますか?

4

1 に答える 1

1

MongoKit 構造のドキュメントによると、スキーマレス構造機能を使用する場合は、オプションのフィールドを使用できます。

バージョン 0.7 以降、MongoKit では部分的に構造化されたドキュメントを保存できます。

したがって、次のようにクラスを設定すると、動作するはずです。

from mongokit import *
class Test(Document):
    use_schemaless = True
    structure = {'title': unicode, 'body': unicode}
    required_fields = [ 'title', 'body' ]

それには必要ですが、他のフィールドが存在することを許可する必要がtitleあります。bodyドキュメントによると:

必須フィールドが欠落している場合にのみ、MongoKit は例外を発生させます。

于 2013-08-29T20:08:38.553 に答える