gpt4 book ai didi

mongodb - 无法在 mongodb mapReduce 命令中设置查询过滤器

转载 作者:可可西里 更新时间:2023-11-01 09:25:03 26 4
gpt4 key购买 nike

我正在尝试使用查询过滤 mapReduce 命令。这个查询似乎没有被 mapReduce 命令使用。当我使用具有相同参数的 runCommand 时,将使用查询过滤器。我尝试使用 mongodb 2.2.1 和 2.0.1。

我的 mapReduce 函数的查询没有使用。

m = function () {
if (this.duration > 0) {
emit("dur", this.duration);
}
}

r = function (key, values) {
var index = 0;
var sum = 0;
for (var i = 0; i < values.length; i++) {
sum += values[i];
index++;
}
return sum / index;
}

这个命令不起作用:

res = db.movies.mapReduce(m,r, {out: { inline : 1}},{query:{kinds:'Action'}});

{
"results" : [
{
"_id" : "dur",
"value" : 5148.227224559308
}
],
"timeMillis" : 1849,
"counts" : {
"input" : 105472,
"emit" : 69602,
"reduce" : 106,
"output" : 1
},
"ok" : 1,
}

这个命令工作:

res = db.runCommand({mapReduce : "movies", map : m, reduce : r, query : {kinds:'Action'}, out : {inline:1} })

{
"results" : [
{
"_id" : "dur",
"value" : 6134.118191572414
}
],
"timeMillis" : 238,
"counts" : {
"input" : 3577,
"emit" : 2910,
"reduce" : 4,
"output" : 1
},
"ok" : 1
}

使用 runCommand 查询。有什么想法吗?

最佳答案

您需要将 outquery 选项合并到一个对象中:

res = db.movies.mapReduce(m,r, {out: { inline : 1}, query: {kinds: 'Action'} });

关于mongodb - 无法在 mongodb mapReduce 命令中设置查询过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13333693/

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