当前位置: 首页 > 知识库问答 >
问题:

Java:如何将hashmap插入MongoDB?

封瑞
2023-03-14

我有一个hashmap,我正试图将其插入MongoDB(3.6版)。我知道insertMany()方法——它只获取文档列表。我无法创建列表,因为我的数据中有重复项,我想消除它们。这就是我创建hashmap的原因。有没有办法将hashmap插入Mongodb?我找到了一个链接https://www.mkyong.com/mongodb/java-mongodb-insert-a-document/这显示了如何将地图插入Mongodb

collection.insert(new BasicDBObject(documentMap));

但是BasicDBObject在新的mongoDB中被弃用。我的哈希图如下所示:

-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 collecion看起来像这样:

new_collection
{
_id: -493382214
query: ExactMatch,
link: http://example.com,
content: Search Consultancy
}
{
_id:
...
}

编辑:我的问题背景:我正试图在MongoDB中插入一个CSV文件。我的CSV文件有重复的行(相同的行)。这就是为什么我必须将它们转换为hashmap,而不是存储在arrayList(文档)中。我知道我们可以使用insertMany(列表(文档))插入Mongodb,但我需要避免重复。

感谢您的帮助。

共有2个答案

林和畅
2023-03-14

这就是你想要的:

collection.insertOne(new Document(documentMap));
燕元明
2023-03-14

使用for loop映射_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);
 类似资料:
  • 问题内容: 我当前正在从文本文件中读取200万行,如上一个问题中所述 。Java读取200万行文本文件的最快方法 现在,我将这些信息存储到HashMap中,并希望通过TreeMap对其进行排序,因为我想使用ceilingkey。以下方法正确吗? 问题答案: HashMap hashMap = new HashMap (); TreeMap treeMap = new TreeMap (); tre

  • 我是Java新手。我一直在从事一个使用Maven和Java1.7的项目。在我的项目中,我有一个HashMap。我想将这个HashMap输出到JSON。目前推荐的方法是什么? 当我在谷歌上搜索时,我有很多选择(比如杰克逊)。然而,我不确定我应该用什么。另外,我想使用一个可以通过Maven访问的图书馆。 非常感谢。

  • 问题内容: 当我尝试粘贴到HTML文本文件中时,我总是被踢出外壳。如何才能做到这一点?我首先需要使用一些JavaScript对其进行编码吗? 例: 编辑 我只在HTML中放入单引号,然后将整个内容都用双引号引起来,但仍然没有好处。外壳错误: 问题答案: 您需要删除或编码字符串中的控制字符。 例如,将您的文本粘贴到此处,然后编码为UTF-8 ECMAScript(表示javascript字符串)。

  • 我的意图是创建4个Emp对象。2个对象(e1和e2)具有相同的哈希代码。因此,当插入e1(插入在e2之后)时,hashmap会意识到具有相同哈希值的对象已经存在(对象e2)。然后它会将槽中所有对象的键与相同的哈希值进行比较。如果它找到一个具有匹配键的对象(通过调用下面Emp类的equals方法),它将用新值替换旧值。 下面请看一下测试代码: 我期望的输出:替换的记录名称:Terry,年龄:60名称

  • 我在PostgreSql中创建了一个表books。 我的Json: 如何通过java代码将json插入Postgres?

  • 问题内容: 我正在寻找仅使用JSTL设置HashMap的键值对。这可能吗? 我知道如何检索键值对,但是还没有找到设置它们的方法。 任何帮助,将不胜感激。 使用JSTL检索HashMap键/值对的示例: 问题答案: 您可以使用。