我正在从现有的集合中创建新的集合。 在此代码中,关键字将存储在文件列表中。
BufferedReader keyword = new BufferedReader(new FileReader("Leave.txt"));
String str;
List<String> list = new ArrayList<String>();
while((str = keyword.readLine()) != null)
{
list.add(str);
}
String[] psentiments = list.toArray(new String[0]);
在这里,我正在检查我的收集天气,任何状态都有特定字。如果它找到,那么它将插入到新的集合中。它工作得很好,但如果它与不同关键字的相同状态进行比较,则会引发错误。 插入代码:
MongoCursor<Document> cursor = collection1.find().iterator();
try {
while (cursor.hasNext()) {
Document dr = cursor.next();
String stat = dr.getString("status");
for(String i:psentiments){
if(stat.contains(i)){
//System.out.println( stat+"-->"+i+ counter);
createcollection(dr,collection1, new ObjectId(dr.get("_id").toString()),newcoll);
counter++;
}
}
}
} finally {
cursor.close();
}
}
private static void createcollection(Document dr, MongoCollection<Document> collection1, ObjectId objectId, MongoCollection<Document> newcoll) {
//我在这里需要帮助..插入文件没有重复
newcoll.insertOne(dr);
}
结果:
线程中的异常&#34; main&#34; com.mongodb.MongoWriteException:E11000重复键错误集合:Brexit.Leave索引: id dup key:{:ObjectId(&#39; 573334f5fbfb8711f0c7ac44&#39;)} 在com.mongodb.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:523) 在com.mongodb.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:306) 在com.mongodb.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:297) 在twitter.sample.createcollection(sample.java:66) 在twitter.sample.main(sample.java:52)
最后两个状态具有相同的密钥。我不知道如何插入而不重复,也只应插入一个状态。 在此先感谢!!!
答案 0 :(得分:0)
你应该使用save()方法。
save() - 根据参数更新现有文档或插入文档。