在MongoDB的对象插入数组
1. 概述
MongoDB 是最流行的开源和分布式的面向文档的 NoSQL 数据库。 MongoDB 中的文档是一种数据结构,其中包含具有字段和值对的类似 JSON 的对象。
为了将文档插入到 MongoDB 集合中,我们可以使用不同的方法,例如 insert()、insertOne() 和 insertMany()
在本教程中,我们将讨论如何在 MongoDB 文档中插入数组。 首先,我们将研究使用 MongoDB Shell 将数组插入文档。 然后我们将使用 MongoDB Java driver 代码。
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 Driver Code 插入操作
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. Using the BSON Document
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);
The above query inserts multiple documents with an array into the student collection.
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 类来实现相同的功能。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfbcebi
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01