访问Django模型的原始Mongodb数据

时间:2012-03-12 10:50:20

标签: django mongodb django-nonrel

我正在将django-nonrel与mongodb-engine结合使用。如果存储在mongodb对象中的所有字段也在模型上定义,那么它的工作非常完美。

但我在mongodb对象上有一些额外的数据,这些数据没有在模型上设置。那是我的问题。现在我做一个额外的查询来获取原始的mongodb对象,如下所示:

collection = connection.get_collection(self._meta.db_table)
self._mongo_data = collection.find_one({'_id': ObjectId(self.pk)}) 

它运行正常,但效率不高,因为这是第二次运行此查询(首先是创建模型,然后是获取原始mongodb数据)。

有没有办法访问原始数据,检索以创建模型?

在模型上设置这些额外字段不是一种选择,因为会动态创建额外数据。

2 个答案:

答案 0 :(得分:1)

我认为没有一个好方法可以做到这一点。

所选字段在查询时限制为模型中的字段:

https://github.com/django-nonrel/mongodb-engine/blob/master/django_mongodb_engine/compiler.py#L123

https://github.com/django/django/blob/master/django/db/models/sql/query.py#L1638

你能使用dict字段/嵌入对象并拥有某种文档级命名空间来从中获取这些吗?

答案 1 :(得分:1)

如果有办法使用SQL数据库执行此操作并且它不能与MongoDB Engine一起使用,请打开错误报告。否则我恐怕你需要先把这个功能放到Django中: - )