MongoEngine返回空列表

时间:2016-08-08 21:17:38

标签: python mongodb mongoengine flask-mongoengine

我有一个名为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)

2 个答案:

答案 0 :(得分:0)

根据documentation Mongoengine默认情况下,将您的Document类名称转换为小写,并将其用作集合的名称。因此,在您的示例中,它会查找名为:relation和reviews的集合。由于您的现有数据库具有不同的集合(请注意拼写 - 首字母大写),您应该通过添加

来设置自定义集合名称
lookup

到你的文件。

meta = {'collection': 'collectionName'}

答案 1 :(得分:-2)

基本上,我发现添加

'allow_inheritance': True
在您的meta中,

迫使mongoengine以某种方式返回空列表。所以摆脱它对我有帮助。