0

mongo_id をオブジェクトとして MongoAlchemy フィールドに格納することは可能ObjectIdですか? 手動で定義したドキュメントの内部に保存できましたObjectIdが、MongoAlchemy ORM のコンテキストで ID の文字列値を保存することに制限されているようです。

これが私のコードの一部です:

class Group(db.Document):  
    name = db.StringField()
    trial_id = db.StringField(required=False)
    participants = db.ListField(
        db.DictField(db.AnythingField()), default_empty=True, required=False)

    def add_participant(self, participant):
        self.participants.append({
            'participant_id': participant.mongo_id,
            'start': datetime.utcnow(),
            })

class Trial(db.Document):    
    name = db.StringField()
    groups = db.ListField(
        db.DocumentField(Group), default_empty=True, required=False)

    def add_group(self, group):
        group.trial_id = str(self.mongo_id)
        group.save()

    def get_group(self, group):
        return Group.query.filter(
            {'name': group, 'trial_id': str(self.mongo_id)}).first()

mongo_id をObjectIdオブジェクトとしてGroupメソッドに格納できることがわかりますadd_participant(MongoAlchemy ORM を介してではなく手動でドキュメントを作成しているため)。db.StringField.

ObjectIdオリジナルを に保存しようとしましdb.AnythingFieldたが、それでフィルタリングできませんでした。

ObjectIdを MongoAlchemy フィールドに格納し、それをデータベース クエリでフィルタリングできるかどうかは誰にもわかりませんか?

ありがとうございました!

4

2 に答える 2

1

ObjectIdField が必要です: http://www.mongoalchemy.org/api/schema/fields.html#mongoalchemy.fields.ObjectIdField

これは、mongo_id に使用されるフィールドのタイプです (ただし、これは特殊なケースです)。

于 2014-08-19T17:54:20.200 に答える