0

目前我正在开发一个 Java 项目,我需要使用 Java 运行 JavaScript Mongo 查询。我发现我可以使用db.eval(). 问题是我对 Mongo 有以下 JavaScript 查询,但我不知道如何将整个脚本传递给该db.eval()方法。

var red = function(doc, out) {
out.count_order++;
out.sum_qty += doc.quantity;
out.sum_base_price += doc.extendedprice;
out.sum_disc_price += doc.extendedprice * (1 - doc.discount);
out.sum_charge += doc.extendedprice * (1 - doc.discount) * (1 + doc.tax);
out.avg_disc += doc.discount 
};
var avg = function(out) {
out.avg_qty = out.sum_qty / out.count_order;
out.avg_price = out.sum_base_price / out.count_order;
out.avg_disc = out.avg_disc / out.count_order 
};
db.deals.group( {
key : { RETURNFLAG : true, LINESTATUS : true},
cond : { "SHIPDATE" : {$lte: new Date(1998, 8, 1)}},
initial: { count_order : 0, sum_qty : 0, sum_base_price : 0, sum_disc_price : 0,
sum_charge : 0, avg_disc : 0},
reduce : red,
finalize : avg
});
4

2 回答 2

1

我鼓励您查看mongodb java 驱动程序以从 Java 运行查询。Java 驱动程序允许人们直接在 Java 中与他们的 mongodb 数据库进行交互。因此,您可以将此代码移植到 Java 并在 Java 中完成所有工作,而不必使用 javascript 或 db.eval。如果您需要更多说明,请告诉我。

于 2013-04-26T16:19:25.783 回答
0

您还可以使用存储过程,您可以在其中使用 eval() 从 java-driver 调用存储函数

一些细节:http ://dirolf.com/2010/04/05/stored-javascript-in-mongodb-and-pymongo.html

最近在 v2.4 中对 javascript 操作进行了一些并发改进:http: //docs.mongodb.org/manual/release-notes/2.4-javascript/

于 2013-04-30T18:34:39.327 回答