相关疑难解决方法(0)

如何在mongoengine中获取ReferenceField数据?

我有一个问题,查询集oid在json中检索,我想检索我在下面的User集合的实际用户名:

class User(db.Document):
    username      = db.StringField(required=True)
    password_hash = db.StringField()
    is_admin      = db.IntField(default=0)

class Message(db.EmbeddedDocument):
    to_users     = db.ListField(db.ReferenceField(User))
    created_at   = db.DateTimeField(default=datetime.now)
    is_read      = db.BooleanField(default=False)
    body         = db.StringField(required=True)

class Inbox(db.Document):
    from_user    = db.ReferenceField(User, required=True)
    subject      = db.StringField(max_length=255, required=True)
    created_at   = db.DateTimeField(default=datetime.now)
    messages     = db.ListField(db.EmbeddedDocumentField(Message))

username = User().get_username()
username = User.objects(username=username).first()

inbox = Inbox.objects.filter(messages__to_users__in=[username]).only('from_user', 'subject', 'created_at').to_json()
Run Code Online (Sandbox Code Playgroud)

这就是我得到的结果:

[{"created_at": {"$date": 1401593024844}, "from_user": {"$oid": "538ad45fb43fdd69076d3e64"}, "subject": "test"}]
Run Code Online (Sandbox Code Playgroud)

有这样的事情会很高兴:

[{"created_at": {"$date": 1401593024844}, "from_user": {"username": "holms"}, "subject": "test"}]
Run Code Online (Sandbox Code Playgroud)

或者某种类似的相似 "from_user" : {"User": {"username":"holms"}}

UPDATE

上面的答案适用于Document中的ReferenceField,但是EmbeddedDocument引用呢?假设我只将"消息"添加到()? …

python mongodb mongoengine

5
推荐指数
1
解决办法
7335
查看次数

标签 统计

mongodb ×1

mongoengine ×1

python ×1