mongoengine map_reduce输出到一个新集合抛出ns不存在

时间:2015-02-06 13:21:21

标签: python django mongodb mapreduce mongoengine

我是MongoDB和Mongoengine的初学者,我正在尝试使用Django的map_reduce功能。

我正在使用此代码对我的集合执行map-reduce作业,并将结果保存到新集合中:

from mongengine import Document

class MyClass(Document):
    meta = {"db_alias": "mydatabase"}

...

map_f = "function() { emit(this.foo, this.bar); }"
reduce_f = "function(key, values) { return values[0]; }"
output_collection_name = "mynewcollection"

result = MyClass.objects.map_reduce(map_f, reduce_f, output_collection_name)

first_mapreduce_doc = result.next()  # exception thrown

但是,这会引发“ns不存在”异常。

据我所知,使用这种语法,数据库名称应该与存储“MyClass”文档的位置(存在)相同,并且应该通过此调用创建集合“mycollection”。究竟什么“不存在”?

我做错了吗?在进行此调用之前,我是否应该以某种方式手动创建空集合?

当我使用时:

output_collection_name = "inline"

它完美无缺。

提前致谢!

  • Python版本:2.7
  • Django版本:1.7.1
  • MongoDB版本:2.6.7
  • MongoEngine版本:0.8.7

0 个答案:

没有答案