我是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"
它完美无缺。
提前致谢!