我正在使用Java线程进程,而且我使用MongoDB 3.0(非分片)和Morphia进行了一些写/更新问题。以下是它的工作原理:
1)线程A更新具有特定“_id”的文档中的一些数据(通过Morphia ODM)
2)在执行document.save()之后,线程A向线程B发送“_id”
3)线程B收到“_id”,查询MongoDB以检索书面文档
有时,线程B收到“_id”,查询MongoDB但没有获得文档的更新版本(仍然是旧值)。
我认为这是写作问题。我已经设置了MongoDB客户端和Morphia数据存储区:
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之前,等待Morphia在MongoDB中更新文档?
答案 0 :(得分:0)
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-