gpt4 book ai didi

java - MongoDB 3.0 出现意外的映射缩减结果

转载 作者:行者123 更新时间:2023-12-02 02:53:28 24 4
gpt4 key购买 nike

我正在尝试为我的网站实现 map 缩减(使用 MongoDB 3.0、Java 7)。

首先,我只想测试功能,但我的集合不受其输出的影响:

    String map = "function(){"
+ "emit(\"testValue\", [5, 5, 10]);"
+ "}" ;

String reduce = "function(key, values){"
+ "return Array.sum(values);"
+ "}";

// INPUT COLLECTION
MongoCollection<Document> collection =
MongoDBManager.getMongoCollection("colTest");

// OUTPUT COLLECTION
MongoCollection<Document> index =
MongoDBManager.getMongoCollection("index");

// MAP REDUCE
collection.mapReduce(map, reduce)
.action(MapReduceAction.REPLACE)
.collectionName("index");


// SEE CONTENT OF INDEX
FindIterable<Document> result = index.find();

MongoCursor<Document> cursor = result.iterator();

while(cursor.hasNext()){
Document current = cursor.next();
System.out.println(current.toString());
}
cursor.close();

这是 println 的输出:

Document{{_id=58f4098537a734176b1c140f, testID=0}}

colTest 不为空。这是一个示例:

{"messages": [
{
"date": 1492308383230,
"likesNumber": 1,
"_id": {"$oid": "58f2d19f37a734176941a0ef"},
"likers": ["allen"],
"content": "a",
"username": "paul"
},
{
"date": 1492308345420,
"likesNumber": 0,
"_id": {"$oid": "58f2d17937a734172897ea8b"},
"content": "ab",
"username": "allen"
},
{
"date": 1492308287884,
"likesNumber": 0,
"_id": {"$oid": "58f2d13f37a73416ef3d214e"},
"content": "abc",
"username": "john"
}
]}

我想要以下输出...

{"testValue" : 20}

...colTest 中有多少文档(我的示例中为 3 个)就有多少次。

为什么我的 Collection 没有变化?代码有问题还是我应该期待这个结果?

最佳答案

您可以尝试下面的 MapReduce 查询。

String map = "function() {\n" +
" var array = [5, 5, 10];\n" +
" for (var idx = 0; idx < array.length; idx++) {\n" +
" var key = 'testValue';\n" +
" var value = array[idx];\n" +
" emit(key, value);\n" +
" }\n" +
" };";

String reduce = "function(key, values) {return Array.sum(values);};";

// MAP REDUCE
collection.mapReduce(map, reduce).action(MapReduceAction.REPLACE).collectionName("index").first();

first 向驱动程序发出信号以运行查询。

这将输出类似的内容

Document{{_id=testValue, value=20.0}}

关于java - MongoDB 3.0 出现意外的映射缩减结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43443611/

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