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中将readpreference设置为secondary时,写入操作是否转到secondary?_Mongodb_Mongomapper_Mongodb Query_Spring Data Mongodb_Mongo Java - Fatal编程技术网

在mongodb中将readpreference设置为secondary时,写入操作是否转到secondary?

在mongodb中将readpreference设置为secondary时,写入操作是否转到secondary?,mongodb,mongomapper,mongodb-query,spring-data-mongodb,mongo-java,Mongodb,Mongomapper,Mongodb Query,Spring Data Mongodb,Mongo Java,我已经设置了复制(本地主机:27017(主)、本地主机:27018(辅助)、本地主机:27019(arb)) 我已在连接杆中将readPrefrence设置为辅助,如下所示 setReadPreference(ReadPreference.secondary()) 当我通过此连接保存一些数据时,是否会请求路由到主节点 我如何确认这一点 我见过DBCollection coll=getCollection() 在此“serverUsed”中,显示了“localhost:27018”。否。正如术语所

我已经设置了复制(本地主机:27017(主)、本地主机:27018(辅助)、本地主机:27019(arb))

我已在连接杆中将readPrefrence设置为辅助,如下所示 setReadPreference(ReadPreference.secondary())

当我通过此连接保存一些数据时,是否会请求路由到主节点

我如何确认这一点

我见过DBCollection coll=getCollection()


在此“serverUsed”中,显示了“localhost:27018”。

否。正如术语所述,
readPreference
仅设置要从集群中读取的首选服务器。只能写入副本集中的主服务器

它不从主设备读取,读取首选项辅助设备就是这个意思,它永远不会干扰主设备。

这将自动完成,对吗?意味着写入操作将转到主右侧?总是写入操作转到主。当我看到DBCollection coll=getCollection()时;coll.getStats()我看到的输出如下{“serverUsed”:“localhost/127.0.0.1:27017”,“ns”:“test_db.Customer”,“count”:4,“size”:320,“avgObjSize”:80.0,“storageSize”:4864,“numExtents”:1,“nindex”:1,“lastExtentSize”:4864,“paddingFactor”:1.0,“flags”:1,“totalIndexSize”:8192,“indexSizes”:{“id”:8192},“ok”:1.0}服务器使用是什么意思?@rajesh不仅仅是自动的。在主屏幕上写字是不可能的。它不是一个可以设置或更改的配置。我不确定serverused是什么意思,因为我从未使用过java mongo api,但它似乎就是从中获取统计数据的服务器。我认为getStats映射到shell中的collection stats函数。在这种情况下,我认为您正在从主服务器获取统计信息。由于stats是无害的,不会更新数据,所以我认为从master获取数据是很正常的。无论如何,请记住,您可以在查找操作中始终使用读取首选项覆盖此行为。可能您想使用secondary Preferred,它与secondary稍有不同。次要始终是次要的,次要首选从次要读取,如果没有成员可用,则从主要读取。任何方式写入操作都只能正确地转到主要,即使我们将readpreference设置为次要?写入操作始终转到主要,您无法将它们发送到次要。当我看到DBCollection coll=getCollection()时,副本集的其余成员仅接收读取(当然是在启用它们的情况下),并且它们包含数据(请记住,存在不同的副本集成员);coll.getStats()我看到的输出如下{“serverUsed”:“localhost/127.0.0.1:27017”,“ns”:“test_db.Customer”,“count”:4,“size”:320,“avgObjSize”:80.0,“storageSize”:4864,“numExtents”:1,“nindex”:1,“lastExtentSize”:4864,“paddingFactor”:1.0,“flags”:1,“totalIndexSize”:8192,“indexSizes”:{“id”:8192},“确定”:1.0}什么是serverUsed?确认这一点的最简单方法是确保副本集中没有主副本,然后尝试成功执行写入。看着它失败。
         coll.getStats();
enter code here