Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何告知mongodb聚合框架在主节点上执行_Mongodb_Spring Data Mongodb - Fatal编程技术网

如何告知mongodb聚合框架在主节点上执行

如何告知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

我有一个包含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="${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级别)强制在主服务器上处理聚集?

我认为这里需要一些概念:

  • 如果您希望在一组机器上分配读写操作的容量,那么您需要实现而不是复制集
  • 不要使用secondary和secondary Preferred来提供额外的读取容量,因为复制副本的所有成员具有大致相等的写入流量;因此,二级缓存将以与主缓存大致相同的速率为读取提供服务
  • 不能在副本集中的辅助节点上写入

  • 您可以找到所有这些信息

    这里有些不对劲。显示属性文件中的相关条目,因为我怀疑您实际上只是连接到辅助节点,而不是真正的“副本集”。
    从机正常
    是这种情况的主要指示器,否则应该完全没有必要。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\" }"