作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 HashMap ,我正试图将其插入到 MongoDB(3.6 版)中。我知道 insertMany() 方法——它只接受文档列表。我无法创建列表,因为我的数据中有重复项并且我想删除它们。这就是我创建 HashMap 的原因。有什么办法可以将散列图插入 Mongodb 中吗?我找到一个链接 https://www.mkyong.com/mongodb/java-mongodb-insert-a-document/这显示了如何将 map 插入 Mongodb
collection.insert(new BasicDBObject(documentMap));
但是 BasicDBObject 在新的 mongoDB 中被弃用了。我的 HashMap 如下所示:
-1322771423 [ecn, KeywordMatch, http://insidedell.com/ecn, ECN]
-2144339676 [product marketing, PhraseMatch, http://dellemc.com/product, Products]
-214203024 [jive, ExactMatch, http://test.com/jive, Jive test]
-493382214 [search, ExactMatch, http://example.com, Search Consultancy]
基本上我希望我的 MongoDB 集合看起来像这样:
new_collection
{
_id: -493382214
query: ExactMatch,
link: http://example.com,
content: Search Consultancy
}
{
_id:
...
}
编辑:我的问题背景:我正在尝试将 CSV 文件插入 MongoDB。我的 CSV 文件有重复的行(相同的行)。这就是为什么我必须将它们转换成散列图而不是将它们存储在 arrayList(Document) 中。我知道我们可以使用 insertMany(List(Document)) 插入到 Mongodb 中,但我需要避免这些重复项。
感谢任何帮助。
最佳答案
使用 for 循环映射 _id 和值并将所有值收集到文档列表中。
有点像
Map<String, List<String>> inMap = new HashMap<>();
List<Document> documents = new ArrayList<>();
for(Map.Entry<String, List<String>> kv :inMap.entrySet()) {
Document doc = new Document();
doc.put("_id", kv.getKey());
List<String> values = kv.getValue();
doc.put("query", values.get(0));
... rest of values
documents.add(doc);
}
collection.insertMany(documents);
关于Java:如何将 HashMap 插入 MongoDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49139226/
我是一名优秀的程序员,十分优秀!