通读这些文档,我仍然对流畅地使用mongoclient的优点(如果有的话)感到困惑。有谁能给我解释一下,如果能保证秩序的话;
在线运行-两者将同时运行,没有订单保证。
mongoClient.runCommand("aggregate", getSomeCommand1(), res -> {});
mongoClient.runCommand("aggregate", getSomeCommand2(), res -> {});
运行nested-getsomecommand1将在getsomecommand2之前先运行到完成。
mongoClient.runCommand("aggregate", getSomeCommand1(), res1 -> {
mongoClient.runCommand("aggregate", getSomeCommand2(), res2 -> {});
});
流畅地跑步-和排队跑步一样吗?
mongoClient.runCommand("aggregate", getSomeCommand1(), res -> {}).mongoClient.runCommand("aggregate", getSomeCommand2(), res -> {});
最佳答案
虽然不是一个完整的答案,但运行一些基本的测试表明,流畅的运行方式是一样的,在直线运行;
我在一个大数据集上运行了一个慢速命令(聚合)和一个快速命令(计数)。
mongoClient.runCommand("aggregate", getTotalRecsPerTypeCommand(sellerId, collection), res -> {
result.put("totalRecsPerType", res.result());
}).count(collection, new JsonObject().put("sellerId", sellerId), res -> {
result.put("totalRecs", res.result());
requestMessage.reply(result);
});
最初只返回总数,但是当应答从fast命令移动到slow命令时,两个结果都将返回。这表明它们都在同一时间运行,没有订单保证。
mongoClient.runCommand("aggregate", getTotalRecsPerTypeCommand(sellerId, collection), res -> {
result.put("totalRecsPerType", res.result());
requestMessage.reply(result);
}).count(collection, new JsonObject().put("sellerId", sellerId), res -> {
result.put("totalRecs", res.result());
});