我使用的是Java线程进程,并且使用MongoDB 3.0 (而不是切分)和莫菲亚存在一些写入/更新问题。下面是它的工作原理:
1)线程--在具有特定"_id“的文档中更新某些数据(通过Morphia )
2)执行document.save()后,线程A将"_id“发送到线程B
3)线程B接收"_id",查询MongoDB检索书面文档
有时,线程B接收"_id",查询MongoDB,但没有得到文档的更新版本(仍然是旧值)。
我觉得这是个写的问题。我已经建立了MongoDB客户端和摩尔菲数据存储,如下所示:
MongoClient mongoClient = new MongoClient(new ServerAddress (host,port),
credential);
Datastore datastore = morphia.createDatastore(mongoClient, datastoreName);
// Setting up writeconcern
WriteConcern wc=new WriteConcern(1,0,false,true);
datastore.setDefaultWriteConcern(wc);
mongoClient.setWriteConcern(wc);
我遗漏了什么吗?在将消息发送到线程B之前,如何真正等待MongoDB中的Morphia更新文档?
发布于 2016-03-15 14:20:59
primary
或primaryPreferred
是您想要的,请参阅http://api.mongodb.org/java/current/com/mongodb/ReadPreference.html#primary--PS:我认为您的WriteConcern创建是不可取的:http://api.mongodb.org/java/current/com/mongodb/WriteConcern.html#WriteConcern-java.lang.String-int-boolean-boolean-
https://stackoverflow.com/questions/36009946
复制相似问题