在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python  網(wǎng)絡(luò)安全/ mongoengine 內(nèi)嵌文檔查詢

mongoengine 內(nèi)嵌文檔查詢

我使用的是 flask-mongoengine.
查詢內(nèi)嵌文檔

Topic.objects(userinfo__username='HGB')

這樣查詢內(nèi)嵌文檔是沒有問題的是可以查到結(jié)果的。

我有一個數(shù)據(jù)模型中的內(nèi)嵌文檔使用了一個 GenericEmbeddedDocumentField

代碼如下:

    information = db.GenericEmbeddedDocumentField(required=True, choices=[AnimeInformation, ComicInformation])


    class AnimeInformation(db.EmbeddedDocument):
        episode = db.StringField()
    
        subtitle = db.StringField()
    
        is_finished = db.BooleanField(default=False)

        publish_date = db.DateTimeField(default=datetime.utcnow())
 
        updated_at = db.DateTimeField(default=datetime.utcnow())
    Topic.objects(information__episode='12')

理論上使用上面的這句話查詢是沒錯的呀。
但是會報錯。

錯誤:
圖片描述

mongoengine.errors.InvalidQueryError
mongoengine.errors.InvalidQueryError: Cannot resolve subfield or operator episode on the field information

Traceback (most recent call last)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Volumes/DATA One/dev/workspaces/BadLoli-Flask/api/topics.py", line 40, in index
information__episode='12'
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mongoengine/queryset/base.py", line 299, in first
result = queryset[0]
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mongoengine/queryset/base.py", line 197, in __getitem__
queryset._cursor[key],
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mongoengine/queryset/base.py", line 1547, in _cursor
self._cursor_obj = self._collection.find(self._query,
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mongoengine/queryset/base.py", line 1590, in _query
self._mongo_query = self._query_obj.to_query(self._document)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mongoengine/queryset/visitor.py", line 89, in to_query
query = query.accept(QueryCompilerVisitor(document))
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mongoengine/queryset/visitor.py", line 155, in accept
return visitor.visit_query(self)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mongoengine/queryset/visitor.py", line 78, in visit_query
return transform.query(self.document, **query.query)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mongoengine/queryset/transform.py", line 63, in query
raise InvalidQueryError(e)
mongoengine.errors.InvalidQueryError: Cannot resolve subfield or operator episode on the field information

相關(guān)文檔 http://docs.mongoengine.org/a...

一頭霧水

回答
編輯回答
瘋浪

找到問題了 mongoengine bug

我使用的是 flask-mongoengine 1.11版本 / mongoengine 版本是0.15

我把mongoengine 升級到 0.15.3。就好了。好了。。。

以上就沒出現(xiàn)問題了 正常查詢到結(jié)果。

2017年4月4日 22:29