2016-08-08 12 views
0

Ich habe eine Datenbank namens Suvaider. Es enthält zwei Sammlung Relationen und Reviews. Ich habe diese beiden durch den Import von JSON-Dateien gefüllt. Ich habe Modelle für diese beiden Kollektionen erstellt. Aber während versucht wird, diese Modelle zu verwenden, um Daten mit Mongoengine zu erhalten, wird ein leeres Array zurückgegeben. Ich bin ein Anfänger Ich benutze Mongodb zum ersten Mal mit Kolben. Danke im Voraus!!!MongoEngine gibt leere Liste zurück

# 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) 

Antwort

0

Nach dem documentation Mongoengine standardmäßig konvertiert Ihren Namen er als Name der Sammlung in Kleindokumentenklasse und zu verwenden. In Ihrem Beispiel sucht es nach Sammlungen namens relation und reviews. Da Sie mit verschiedenen Sammlungen vorhandenen Datenbank haben (die Schreibweise bemerken - Anfangsbuchstaben in Großbuchstaben) Sie benutzerdefinierte Kollektionsnamen durch Hinzufügen

meta = {'collection': 'collectionName'} 

auf Ihre Dokumente setzen soll.

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'} 
Verwandte Themen