我有一个包含两个分片的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会自行正确地解析主节点。有什么想法或见解吗?
答案 0 :(得分:1)
似乎仅在通过Robo 3T执行时发生。通过原始shell执行工作正常。
答案 1 :(得分:0)
我今天遇到了同样的问题,并通过删除“ getCollection”解决了该问题。
您可以尝试运行:
db.restaurants.aggregate([
{$match : {$text : {$search : "steak"}}},
{$out : "steak_restaurants"}
])