mongoShell 和node.js 应用的结果不同。 我的mongodb环境使用的是分片集群。
The result of mongoShell
mongos> db.runCommand({aggregate : "collection", pipeline : my_pipeline(), allowDiskUse : true});
{
"result" : [ ],
"ok" : 1,
"$gleStats" : {
"lastOpTime" : Timestamp(1428399959, 408),
"electionId" : ObjectId("552363d7ddfce783509094e5")
}
}
The result of node.js application
var mongodb = require('mongodb');
var mongoClient = new mongodb.MongoClient(...);
mongoClient.open(function (err, mongoClient) {
var db = mongoClient.db(...);
db.command({aggregate : "collection", pipeline : my_pipeline(), allowDiskUse : true}, function (err) {
...
});
});
-->
MongoError: exception: failed to create temporary $out collection 'db.tmp.agg_out.12': { note: "from execCommand", ok: 0.0, errmsg: "not master" }
我想在 node.js 应用程序中执行聚合框架查询。
如何在应用程序中执行此查询?
最佳答案
我自己通过升级node.js mongodb驱动解决了。
我在之前的测试中使用了 1.4.29 版本的 mongodb 驱动。
在 1.4.29 版本的 API 中,'db.command' 不检查关于从站的读取偏好。
所以当我运行我的应用程序时,我遇到了这样的错误。
将 node.js mongodb 驱动程序升级到 2.0.27(最新)并将我的应用程序自定义为更改后的 API 后,应用程序运行良好。
感谢您的建议。
关于node.js - node.js 原生 mongodb 驱动程序在运行 db.command({aggregate : . ..}) 时返回 "not master"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29490469/