mongodb使用$ out和mongos返回错误

时间:2017-08-03 22:44:15

标签: mongodb

我有一个包含两个分片的mongodb群集,每个分片都是一个3个节点的复制集,另一个是三个节点的配置服务器群集。

除了我尝试使用$ out运算符在聚合管道的末尾编写集合时,所有似乎都是有序的:

db.getCollection('restaurants').aggregate([
 {$match : {$text : {$search : "steak"}}},
 {$out : "steak_restaurants"}
])

这会返回以下错误:

ailed执行脚本。

  

错误:断言:命令失败:{" ok" :0," errmsg" :" listIndexes   失败:{ok:0.0,errmsg:\"不是master和slaveOk = false \",代码:   13435,codeName:\" NotMasterNoSlaveOk \" }","代码" :18631,     "代号" :"地点18631" }:聚合失败   _getErrorWithCode@src/mongo/shell/utils.js:25:13 doassert@src/mongo/shell/assert.js:16:14   assert.commandWorked@src/mongo/shell/assert.js:370:5   DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1319:5   @(壳):1:1

     

错误:命令失败:{" ok" :0," errmsg" :" listIndexes失败:{   ok:0.0,errmsg:\"不是master和slaveOk = false \",代码:13435,   codeName:\" NotMasterNoSlaveOk \" }","代码" :18631," codeName" :   " Location18631" }:聚合失败:   _getErrorWithCode@src/mongo/shell/utils.js:25:13 doassert@src/mongo/shell/assert.js:16:14   assert.commandWorked@src/mongo/shell/assert.js:370:5   DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1319:5   @(壳):1:1

mongo shell连接到mongos路由器。如果我对mongod执行相同的操作,这很好。

该错误表明某种方式是从辅助节点进行读取,但是,我没有设置任何读取偏好,我会认为mongos会自行正确地解析主节点。有什么想法或见解吗?

2 个答案:

答案 0 :(得分:1)

似乎仅在通过Robo 3T执行时发生。通过原始shell执行工作正常。

答案 1 :(得分:0)

我今天遇到了同样的问题,并通过删除“ getCollection”解决了该问题。

您可以尝试运行:

   db.restaurants.aggregate([
   {$match : {$text : {$search : "steak"}}},
   {$out : "steak_restaurants"}
   ])