我在java多线程程序中对MongoDB进行了一些测试,以检查MongoDB如何确保对文档的并发访问。我的示例程序确保集合中只存在一个副本。如果文档中不存在文档,则会插入文档,否则会更新文档频率。经过几次测试,我发现一些文件存在相同的价值。
收藏品设计
DataSourceSerieDiscrete.cxx: In copy constructor ‘DataSourceSerieDiscrete::DataSourceSerieDiscrete(const DataSourceSerieDiscrete&)’:
DataSourceSerieDiscrete.cxx:5:117: error: invalid conversion from ‘const ListeBase<int>*’ to ‘ListeBase<int>*’ [-fpermissive]
DataSourceSerieDiscrete::DataSourceSerieDiscrete(const DataSourceSerieDiscrete &DSSDSai) : pListe(DSSDSai.getPListe()) {};
^
此处“doc”字段用于搜索,如果找到任何内容,则更新“doc_freq”。如果找不到任何内容,则会插入新文档。
实施
{
_id: ObjectID,
doc: String,
doc_freq: Integer
}
我插入了100000个具有相同doc值并使用200个线程的条目。并且发现在具有相同doc值的集合中找到了多个条目。我在OS Yosemite上使用了 Java MongoDB驱动程序版本:3.0.4 和 MongoDB版本:3.2.1