gpt4 book ai didi

mapreduce - pymongo 用户断言 : 13606 :'out' has to be a string or an object

转载 作者:行者123 更新时间:2023-12-03 23:17:32 25 4
gpt4 key购买 nike

我不知道我做错了什么。我正在使用 pymongo 并具有以下 map/reduce 代码(文档的所有属性都可以直接访问——即这里没有相关的嵌入部分:

(在文件 getTableMap.js 中):

function() {
var tablePoints1 = 0;
var tablePoints2 = 0;
if (this.pointsTeam1 == this.pointsTeam2) {
tablePoints1 = 1;
tablePoints2 = 1;
}
else {
if (this.pointsTeam1 > this.pointsTeam2) {
tablePoints1 = 3;
}
else {
tablePoints2 = 3;
}
}
emit(this.idTeam1, [tablePoints1, this.pointsTeam1, this.pointsTeam2]);
emit(this.idTeam2, [tablePoints2, this.pointsTeam2, this.pointsTeam1]);
}

调用 map_reduce 的 python 代码如下所示:

def getTableOnMatchday(self):
m = Code(open('getTableMap.js','r').read())
r = Code("""function(k,values) {
var foo = 'foo';
return(foo);
}""")

result = bl_1.map_reduce(m, r, "myresult")
for doc in result.find():
print doc

对于 Python 代码,我直接从文档中改编了简单示例: http://api.mongodb.org/python/current/examples/map_reduce.html Map Reduce example from pymongo 2.0.1 documentation

运行代码时得到的 Python 回溯是:

>>> api.getTableOnMatchday()
Traceback (most recent call last):
pymongo.errors.OperationFailure: command SON([('mapreduce', u'bl1_2011'),
...
...
...
) failed: db assertion failure

这并没有告诉我太多所以我将 mongod 登录设置为详细并在日志中找到了这个:

Thu Sep 15 21:04:02 [conn7] User Assertion: 13606:'out' has to be a string
or an object

从实际生成 map_reduce 调用的 Python 代码来看,第三个参数('out',根据 pymongo 2.0.1 文档)是 'myresult',它肯定是一个字符串。

pymongo 在这里提示什么? Javascript 在语法上是正确的(我认为)。我知道 reduce 目前什么都不做,但这不应该阻止命令服务器端的编译——或者它可能会阻止?

最佳答案

我想我已经找到了答案,通过更多的试验和错误以及阅读 PHP 驱动程序的文档:

result = bl_1.map_reduce(m, r, out="foo")

您实际上必须将 out=string 指定为第三个参数。

文档中的示例在这里误入歧途:

result = bl_1.map_reduce(m, r, "foo") 

关于mapreduce - pymongo 用户断言 : 13606 :'out' has to be a string or an object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7436153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com