如何告知mongodb聚合框架在主节点上执行
我有一个包含3个节点的Mongodb副本集和一个配置如下的Spring应用程序:如何告知mongodb聚合框架在主节点上执行,mongodb,spring-data-mongodb,Mongodb,Spring Data Mongodb,我有一个包含3个节点的Mongodb副本集和一个配置如下的Spring应用程序: <mongo:mongo id="mongo" replica-set="${mongo.replicaset}"> <mongo:options auto-connect-retry="true" slave-ok="true" /> </mongo:mongo> <mongo:db-factory dbname="${mo
<mongo:mongo id="mongo" replica-set="${mongo.replicaset}">
<mongo:options auto-connect-retry="true" slave-ok="true" />
</mongo:mongo>
<mongo:db-factory dbname="${mongo.dbname}" username="${mongo.username}" password="${mongo.password}" mongo-ref="mongo" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
<mongo:repositories base-package="com.nounou.repository" />
基本上,它说它不能将结果写入辅助节点。
如果我设置了slave ok=“false”
,我就不会再遇到这个问题,因为它也会将读取操作切换到主节点。
但我不能认为这是一个解决方案,因为它只会让1个节点管理读写。
是否有任何配置或解决方法(在spring或mongodb级别)强制在主服务器上处理聚集?我认为这里需要一些概念:
您可以找到所有这些信息这里有些不对劲。显示属性文件中的相关条目,因为我怀疑您实际上只是连接到辅助节点,而不是真正的“副本集”。
从机正常
是这种情况的主要指示器,否则应该完全没有必要。mongo.replicaset=host1:port1,host2:port2,host3:port3Yep。缺少?replicaSet=name
选项。这只是连接到没有它的“第一个可联系主机”,而且它很可能是列表中的“第二个”。这实际上只是“尝试连接的主机”的“种子列表”。它是实际的replicaSet
参数,用于确定您是否实际连接到副本集。使用URI选项也是“首选”的。此外,您应该已经阅读了“至少”数据库选择的首选项设置,并且由于这种错误配置,它可能根本不存在。谢谢。您是否有一个使用URI和正确参数的示例?请立即查看。这是一个有点误导,因为他们省略了选项,以及我还没有看到任何方式的答案,做更多的参考文件。这本书有各种各样的例子。但是试着把一些更完整的东西放在一起,或者看看我是否有现成的东西。
"errmsg" : "failed to create temporary $out collection 'smn.tmp.agg_out.410': { ok: 0.0, errmsg: \"Not primary while creating collection smn.tmp.agg_out.410\", code: 10107, codeName: \"NotMaster\" }"