我使用mongoengine
(它是pymongo
的ORM包装(。文档中的url
字段包含一个相对路径(如/abc/blog/12/01
(,我想批量更新fullUrl
字段,使其看起来像https://mywebsite.com/abc/blog/12/01
在Django ORM中,使用update(newfield=F('oldfield')
很容易。在mongoengine
中有没有同样的方法?
class ArticleLink(Document):
url = StringField()
fullUrl=URLField()
所以我怀疑这样的东西是行不通的:
ArticleLink.objects.update(fullUrl=Q('url'))
好的,很抱歉,这比我想象的要简单得多:
HEAD = 'https://example.com'
pipeline = [
{"$set": {"fullUrl": {"$concat": [HEAD, "$url"]}}}
]
data = ArticleLink.objects().aggregate(*pipeline)