2

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

2 回答 2

4

根据文档Mongoengine 默认将您的 Document 类名称转换为小写并将其用作集合的名称。因此,在您的示例中,它会查找名为:relation 和 reviews 的集合。由于您拥有具有不同集合的现有数据库(注意拼写 - 第一个字母大写),您应该通过添加来设置自定义集合名称

meta = {'collection': 'collectionName'}

到您的文件。

class Relation(db.Document):
    parent = db.EmbeddedDocumentField('Hotels')
    units = db.ListField(db.EmbeddedDocumentField('Hotels'))
    meta = {'collection': 'Relation'}

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()
    meta = {'collection': 'Reviews'}
于 2016-08-17T19:54:39.750 回答
-2

基本上,我发现添加

'allow_inheritance': True

在您的元中强制 mongoengine 以某种方式返回空列表。所以摆脱它对我有帮助。

于 2019-08-26T12:34:12.933 回答