以下对我有用,表明您的 map-reduce 命令与描述的一样好。请按照所写的内容尝试以下操作,看看是否得到相同的结果。如果你这样做了,那么你的问题就在其他地方,而不是你的问题中描述的任何东西。希望这会有所帮助。
订单7.js
db.ORDERS7.drop();
db.query.drop();
doc0 = {
"O_ORDERKEY" : NumberLong(359),
"O_CUSTKEY" : {
"$ref" : "CUSTOMER",
"$id" : ObjectId("4f973ff37d6517e9723c4d63")
},
"O_ORDERSTATUS" : "F",
"O_TOTALPRICE" : 239998.53,
"O_ORDERDATE" : ISODate("1994-12-19T02:00:00Z"),
"O_ORDERPRIORITY" : "3-MEDIUM",
"O_CLERK" : "Clerk#000000934",
"O_SHIPPRIORITY" : 0,
"O_COMMENT" : "furiously final foxes are. regular,"
};
doc1 = {
"O_ORDERKEY" : NumberLong(359),
"O_CUSTKEY" : {
"$ref" : "CUSTOMER",
"$id" : ObjectId("4f973ff37d6517e9723c4d63")
},
"O_ORDERSTATUS" : "F",
"O_TOTALPRICE" : 239998.53,
"O_ORDERDATE" : ISODate("1994-12-19T02:00:00Z"),
"O_ORDERPRIORITY" : "3-MEDIUM",
"O_CLERK" : "Clerk#000000934",
"O_SHIPPRIORITY" : 0,
"O_COMMENT" : "furiously final foxes are. regular,"
};
db.ORDERS7.save( doc0 );
db.ORDERS7.save( doc1 );
printjson(db.ORDERS7.find().toArray());
printjson(db.runCommand({
mapreduce: "ORDERS7",
query: {
O_SHIPPRIORITY: 0
},
map : function Map() {
emit("sum",this.O_TOTALPRICE);
},
reduce : function Reduce(key, values) {
var sum = 0;
for (var i = 0; i < values.length; i++) {
sum += values[i];
}
return sum;
},
out: 'query'
}));
printjson(db.query.find().toArray());
$ mongo xyzzy orders7.js
MongoDB shell version: 2.1.2
connecting to: xyzzy
[
{
"_id" : ObjectId("4ffa368b9ee7cfbc46a3990a"),
"O_ORDERKEY" : NumberLong(359),
"O_CUSTKEY" : DBRef("CUSTOMER", ObjectId("4f973ff37d6517e9723c4d63")),
"O_ORDERSTATUS" : "F",
"O_TOTALPRICE" : 239998.53,
"O_ORDERDATE" : ISODate("1994-12-19T02:00:00Z"),
"O_ORDERPRIORITY" : "3-MEDIUM",
"O_CLERK" : "Clerk#000000934",
"O_SHIPPRIORITY" : 0,
"O_COMMENT" : "furiously final foxes are. regular,"
},
{
"_id" : ObjectId("4ffa368b9ee7cfbc46a3990b"),
"O_ORDERKEY" : NumberLong(359),
"O_CUSTKEY" : DBRef("CUSTOMER", ObjectId("4f973ff37d6517e9723c4d63")),
"O_ORDERSTATUS" : "F",
"O_TOTALPRICE" : 239998.53,
"O_ORDERDATE" : ISODate("1994-12-19T02:00:00Z"),
"O_ORDERPRIORITY" : "3-MEDIUM",
"O_CLERK" : "Clerk#000000934",
"O_SHIPPRIORITY" : 0,
"O_COMMENT" : "furiously final foxes are. regular,"
}
]
{
"result" : "query",
"timeMillis" : 22,
"counts" : {
"input" : 2,
"emit" : 2,
"reduce" : 1,
"output" : 1
},
"ok" : 1
}
[ { "_id" : "sum", "value" : 479997.06 } ]