我有一个名为suvaider的数据库。它包含两个集合关系和评论。我通过从json文件导入来填充这两个。我为这两个系列创建了模型。但是在尝试使用这些模型来获取mongoengine的数据时,它返回空数组。我是初学者,我第一次使用mongodb用烧瓶。在此先感谢!!!
# This is models.py
from flask import url_for
from suvaiderBackend import db
class Hotels(db.EmbeddedDocument):
property_id = db.StringField(max_length=255,required=True)
name = db.StringField(max_length=255,required=True)
class Relation(db.Document):
parent = db.EmbeddedDocumentField('Hotels')
units = db.ListField(db.EmbeddedDocumentField('Hotels'))
class Reviews(db.Document):
property_id = db.StringField(max_length=255,required=True)
rating = db.IntField(default=0)
review = db.StringField()
sentiment = db.StringField(max_length=255)
review_link = db.StringField()
#This is __init__.py
from flask import Flask
from flask.ext.mongoengine import MongoEngine
app = Flask(__name__)
app.config["MONGODB_SETTINGS"] = {'DB': "suvaider"}
app.config["SECRET_KEY"] = "Keep3H9Secret"
db = MongoEngine(app)
if __name__ == '__main__':
app.run(debug=true)
答案 0 :(得分:0)
根据documentation Mongoengine默认情况下,将您的Document类名称转换为小写,并将其用作集合的名称。因此,在您的示例中,它会查找名为:relation和reviews的集合。由于您的现有数据库具有不同的集合(请注意拼写 - 首字母大写),您应该通过添加
来设置自定义集合名称lookup
到你的文件。
meta = {'collection': 'collectionName'}
答案 1 :(得分:-2)
基本上,我发现添加
'allow_inheritance': True
在您的meta中,迫使mongoengine以某种方式返回空列表。所以摆脱它对我有帮助。