拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 在MongoDB 中的对象内插入数组

在MongoDB 中的对象内插入数组

白鹭 - 2022-10-08 2145 0 2

一、概述

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 驱动程序支持DBObjectBSON文档。

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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *