一、概述
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
类的实现。然后,我们学会了使用新的BSON
Document 类来实现相同的功能。
0 评论