0
我想在將文檔嵌入到其他文檔之前將其他屬性添加到文檔中,但我不知道該怎麼做。如何在不更改原始模型的情況下向嵌入式文檔添加其他字段
這裏是我的代碼和我所到目前爲止已經試過:
from mongoengine import *
from datetime import datetime
class User(Document):
name = StringField(max_length=80, required=True)
created_at = DateTimeField(default=datetime.now(), required=True)
updated_at = DateTimeField(default=datetime.now(), required=True)
meta = {
'collection': 'users'
}
def save(self, *args, **kwargs):
self.updated_at = datetime.now()
return super(User, self).save(*args, **kwargs)
class Stream(Document):
users = EmbeddedDocumentListField(document_type='User')
created_at = DateTimeField(default=datetime.now(), required=True)
updated_at = DateTimeField(default=datetime.now(), required=True)
meta = {
'collection': 'streams'
}
def save(self, *args, **kwargs):
self.updated_at = datetime.now()
return super(Stream, self).save(*args, **kwargs)
當我嵌入user document
流中的用戶EmbeddedDocumentListField
,它將被添加和看起來像這樣
{
"_id" : ObjectId("57e6123fe8c39b18b1a13431"),
"users" : [
{
"_id" : ObjectId("57e6123fe8c39b18b1a13432"),
"name": "Rohit Khatri",
"created_at" : ISODate("2016-09-24T11:12:23.182Z"),
"updated_at" : ISODate("2016-09-24T11:12:23.301Z")
}
],
"created_at" : ISODate("2016-09-24T11:12:23.189Z"),
"updated_at" : ISODate("2016-09-24T11:12:23.323Z")
}
現在我想要將User文檔嵌入到其他屬性中,例如角色。這是我曾嘗試: -
user = User.objects.create(name='Rohit Khatri')
user.roles = ['admin','writer']
stream = Stream.objects.create()
stream.users.append(user)
stream.save()
但它不會添加的角色領域,這將是感激,如果有人可以幫助我。
感謝
它將改變用戶的文檔,我不想使原來的文檔中的任何改變,但在嵌入式用戶文件。 –
@RohitKhatri不,只需找到想要更改的用戶,然後運行更新即可。 – armak
它引發錯誤'mongoengine.errors.InvalidQueryError:無法解析字段「角色」 –