Mongoengine 链接到现有集合

Dav*_* K. 5 mongoengine flask-mongoengine

我正在使用 Flask/Mongoengine-MongoDB 来构建我最新的 Web 应用程序。

我熟悉 Pymongo,但对像 Mongoengine 这样的对象文档映射器很陌生。

我已经设置了数据库和集合,我基本上只想查询它并返回相应的对象。这是我的 models.py...

from app import db

# ----------------------------------------
# Taking steps towards a working backend.
# ----------------------------------------

class Property(db.Document):

    # Document variables.
    total_annual_rates = db.IntField()
    land_value = db.IntField()
    land_area = db.IntField()
    assessment_number = db.StringField(max_length=255, required=True)
    address =  db.StringField(max_length=255, required=True)
    current_capital_value = db.IntField
    valuation_as_at_date = db.StringField(max_length=255, required=True)
    legal_description = db.StringField(max_length=255, required=True)
    capital_value = db.IntField()
    annual_value = db.StringField(max_length=255, required=True)
    certificate_of_title_number = db.StringField(max_length=255, required=True)

    def __repr__(self):
        return address

    def get_property_from_db(self, query_string):
        if not query_string:
            raise ValueError()
        # Ultra-simple search for the moment.
        properties_found = Property.objects(address=query_string)
        return properties_found[0]
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:IndexError: no such item for Cursor instance

这是完全有道理的,因为该对象没有指向任何集合。尽管浏览了文档一段时间,我仍然不知道如何做到这一点。

你们中有人知道我如何正确地将我的Property班级链接到我已经存在的数据库和集合吗?

Dav*_* K. 6

将类链接到现有集合的方法可以这样完成,使用meta

class Person(db.DynamicDocument):

    # Meta variables.
    meta = {
        'collection': 'properties'
    }

    # Document variables.
    name = db.StringField()
    age = db.IntField()
Run Code Online (Sandbox Code Playgroud)

然后,当使用类对象时,人们实际上可以利用 MongoEngine 所期望的这一功能:

desired_documents = Person.objects(name="John Smith")
john = desired_documents[0]
Run Code Online (Sandbox Code Playgroud)

或者类似的东西:)希望这有帮助!