当前位置: 首页 > 面试题库 >

如何通过Java在MongoDB中一次插入多个文档

余弘新
2023-03-14
问题内容

我在应用程序中使用MongoDB,需要在MongoDB集合中插入多个文档。我使用的版本是1.6

我在这里看到一个例子

http://docs.mongodb.org/manual/core/create/

在里面

批量插入多个文档 部分

作者传递数组的位置。

当我尝试同样的操作时,但是为什么不允许这样做,请告诉我如何一次插入多个文档?

package com;

import java.util.Date;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.MongoClient;

public class App {

    public static void main(String[] args) {
        try {
            MongoClient mongo = new MongoClient("localhost", 27017);
            DB db = mongo.getDB("at");
            DBCollection collection = db.getCollection("people");

            /*
             * BasicDBObject document = new BasicDBObject();
             * document.put("name", "mkyong"); document.put("age", 30);
             * document.put("createdDate", new Date()); table.insert(document);
             */

            String[] myStringArray = new String[] { "a", "b", "c" };

            collection.insert(myStringArray); // Compilation error at this line saying that "The method insert(DBObject...) in the type DBCollection is not applicable for the arguments (String[])"

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

请让我知道这是什么方法,以便可以通过java一次插入多个文档。


问题答案:

DBCollection.insert接受类型为的参数DBObjectList<DBObject>或的数组DBObject一次插入多个文档。您正在传递一个字符串数组。

您必须手动填充文档DBObject,然后将它们插入List<DBObject>或数组,DBObject最后插入insert

DBObject document1 = new BasicDBObject();
document1.put("name", "Kiran");
document1.put("age", 20);

DBObject document2 = new BasicDBObject();
document2.put("name", "John");

List<DBObject> documents = new ArrayList<>();
documents.add(document1);
documents.add(document2);
collection.insert(documents);

上面的代码段与您在MongoDB shell中发出的命令基本相同:

db.people.insert( [ {name: "Kiran", age: 20}, {name: "John"} ]);


 类似资料:
  • 我想知道是否有可能在一次往返(网络呼叫)到Firestore数据库的过程中,通过ID列表获取多个文档。

  • 问题内容: 我知道一次插入多个数据效率更高: 在golang中该怎么做? 使用字符串拼接,但这不是很好。db.Prepare更安全吧? 我需要一个功能更安全,更高效的函数,一次插入多个数据。 问题答案: 为什么不这样呢?(在此处编写但未进行测试,因此可能存在语法错误):

  • 问题内容: 我需要用一个查询插入多行(行数不是常数),所以我需要像这样执行查询: 我知道的唯一方法是 但我想要一些更简单的方法。 问题答案: 我构建了一个程序,该程序将多行插入到位于另一个城市的服务器上。 我发现使用此方法的速度大约是的10倍。就我而言,tup是一个包含约2000行的元组。使用此方法大约花了10秒钟: 使用此方法需要2分钟:

  • 问题内容: 做一个学校的项目,所以任何帮助将是巨大的谢谢! 我有两个表-如何插入两个表中?因此,两个表都是链接的。 用自动递增的主键调用第一个表 第二个称为的表具有链接到父表的外键 问题答案: 您需要执行以下操作: SCOPE_IDENTITY : 返回插入到同一作用域的标识列中的最后一个标识值。范围是一个模块:存储过程,触发器,函数或批处理。因此,如果两个语句位于相同的存储过程,函数或批处理中,

  • 本文向大家介绍MongoDB中一次查询更新多个文档,包括了MongoDB中一次查询更新多个文档的使用技巧和注意事项,需要的朋友参考一下 要通过单个查询更新许多文档,请在MongoDB中使用 bulkWrite()。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是使用MongoDB中的一个查询来更新许多文档的查询- 在find()方法的帮助