2016-08-08 17 views
0

私はデータベースsuvaiderを持っています。それは2つのコレクション関係とレビューを含んでいます。私はjsonファイルからインポートすることでこれらの2つを満たしました。これら2つのコレクションのモデルを作成しました。しかし、これらのモデルを使ってmongoengineでデータを取得しようとすると、空の配列が返されます。私は初心者です。私はフラスコで初めてmongodbを使用しています。前もって感謝します!!!デフォルトでdocumentation MongoengineによるMongoEngineは空のリストを返します

# 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

は小文字とコレクションの名前としてそれを使用するようにドキュメントクラス名を変換します。したがって、あなたの例では、それはrelationという名前のコレクションとreviewという名前のコレクションを探します。あなたが(スペル気づく - 最初の文字を大文字に)異なるコレクションでデータベースを既存しているので、あなたの文書に

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'} 
関連する問題