一、概述
MongoDB是最流行的开源和分布式的面向文档的NoSQL 数据库。MongoDB 中的文档是一种数据结构,其中包含具有字段和值对的类似JSON 的对象。
为了将文档插入到MongoDB 集合中,我们可以使用不同的方法,例如insert()、insertOne()和insertMany()。
在本教程中,我们将讨论如何在MongoDB 文档中插入数组。首先,我们将研究使用MongoDB Shell 查询将数组插入文档。然后我们将使用MongoDB Java 驱动程序代码。
2. 数据库初始化
在我们继续插入查询之前,让我们首先创建一个数据库。让我们称之为baeldung.我们还将创建一个名为student:
use baeldung; db.createCollection(student);
使用此命令,我们的示例baeldung数据库和student集合已成功设置。我们将在所有示例中使用这些来演示。
3. 使用MongoDB Shell
要使用MongoDB Shell 将数组插入到集合中,我们可以简单地将数组作为JSON Array 类型传递给shell:
db.student.insert({
"studentId" : "STU1",
"name" : "Avin",
"Age" : 12,
"courses" : ["Science", "Math"]
});上面的查询在student集合中插入一个带有数组的文档。我们可以通过使用find运算符查询student集合的文档来验证结果:
db.student.find();
上面的查询返回插入的student集合文档:
{
"_id" : ObjectId("631da4197581ba6bc1d2524d"),
"studentId" : "STU1",
"name" : "Avin",
"Age" : 12,
"courses" : [ "Science", "Math" ]
}4.使用Java驱动代码插入操作
MongoDB Java Driver 提供了各种方便的方法来帮助我们将文档插入到集合中:
insert()– 将单个文档或多个文档插入到集合中insertOne()– 将单个文档插入到集合中insertMany()– 将多个文档插入到集合中
上述任何一种方法都可以用于对MongoDB 集合执行insert操作。
接下来,让我们深入研究使用Java MongoDB 驱动程序实现数组插入操作。MongoDB Java 驱动程序支持DBObject和BSON文档。
5. 使用DBObject
在这里,DBObject是MongoDB 旧版驱动程序的一部分,但在较新版本的MongoDB 中已弃用。
让我们将一个带有数组的DBObject文档插入到student集合中:
BasicDBList coursesList = new BasicDBList();
coursesList.add("Chemistry");
coursesList.add("Science");
DBObject student = new BasicDBObject().append("studentId", "STU1")
.append("name", "Jim")
.append("age", 13)
.append("courses", coursesList);
dbCollection.insert(student);上面的查询将带有数组的单个DBObject文档插入到student集合中。
6. 使用BSON文档
BSON文档是在Java 中访问MongoDB 文档的新方法,它是使用更新的客户端堆栈构建的。幸运的是,它也更容易使用。
Java 驱动程序提供了一个org.bson.Document类来将带有数组的Bson文档对象插入到student集合中。
6.1。插入带有数组的单个文档
首先,让我们使用insertOne()方法将带有数组的单个文档插入到集合中:
List coursesList = new ArrayList<>();
coursesList.add("Science");
coursesList.add("Geography");
Document student = new Document().append("studentId", "STU2")
.append("name", "Sam")
.append("age", 13)
.append("courses", coursesList);
collection.insertOne(student);上面的查询将带有数组的单个文档插入到student集合中。重要的是要注意Document类的append(String, Object)方法接受一个Object作为值。我们可以传递任何Object类型的List作为值,以将其作为数组插入到文档中。
6.2.使用数组插入多个文档
让我们使用insertMany()方法将带有数组的多个文档插入到集合中:
List coursesList1 = new ArrayList<>();
coursesList1.add("Chemistry");
coursesList1.add("Geography");
Document student1 = new Document().append("studentId", "STU3")
.append("name", "Sarah")
.append("age", 12)
.append("courses", coursesList1);
List coursesList2 = new ArrayList<>();
coursesList2.add("Math");
coursesList2.add("History");
Document student2 = new Document().append("studentId", "STU4")
.append("name", "Tom")
.append("age", 13)
.append("courses", coursesList2);
List<Document> students = new ArrayList<>();
students.add(student1);
students.add(student2);
collection.insertMany(students);上面的查询将带有数组的多个文档插入到student集合中。
6.3.插入对Object数组
最后,让我们在MongoDB 集合中插入一个Object数组类型的文档:
Document course1 = new Document().append("name", "C1")
.append("points", 5);
Document course2 = new Document().append("name", "C2")
.append("points", 7);
List<Document> coursesList = new ArrayList<>();
coursesList.add(course1);
coursesList.add(course2);
Document student = new Document().append("studentId", "STU5")
.append("name", "Sam")
.append("age", 13)
.append("courses", coursesList);
collection.insertOne(student);上面的查询将带有Object数组的多个文档插入到student集合中。在这里,我们将一个包含文档列表的文档作为数组插入到集合中。同样,我们可以构造任何复杂的数组Object并将其插入到MongoDB 集合中。
7. 结论
在本文中,我们看到了将带有数组Object的文档插入MongoDB 集合的各种方法。我们使用MongoDB Shell 查询以及相应的Java 驱动程序代码实现来讨论这些用例。
对于Java 驱动代码,我们首先查看了使用已弃用的DBObject类的实现。然后,我们学会了使用新的BSONDocument 类来实现相同的功能。
0 评论