迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MongoDB >

使用 MongoDB Shell 打印文档值

作者:迹忆客 最近更新:2023/03/17 浏览次数:

打印文档的价值也是一项令人难以置信的技能,我们可以根据项目的需要从中受益。本教程使用 MongoDB shell 打印文档值而不是打印完整文档。

使用 MongoDB Shell 打印文档值

使用 Mongo shell 打印文档非常简单,但是如何打印值和属性而不是获取整个文档呢?在深入研究细节之前,让我们创建一个名为 teachers 的集合,其中包含如下给出的 JSON 文档。

创建集合:

> db.createCollection('teachers')

将 JSON 文档插入 teachers 集合中:

> db.teachers.insertMany(
  [
        {
            "first_name": "Mehvish",
            "last_name": "Ashiq",
            "gender": "Female",
            "grade": 18
        },
        {
            "first_name": "Tahir",
            "last_name": "Raza",
            "gender": "Male",
            "grade": 18
        },
        {
            "first_name": "Saira",
            "last_name": "Daniel",
            "gender": "Female",
            "grade": 20

        }
    ]

)

显示 teachers 集合中的所有文档:

> db.teachers.find().pretty()

输出:

{
        "_id" : ObjectId("6290440e7c524c650b7a51c0"),
        "first_name" : "Mehvish",
        "last_name" : "Ashiq",
        "gender" : "Female",
        "grade" : 18
}
{
        "_id" : ObjectId("6290440e7c524c650b7a51c1"),
        "first_name" : "Tahir",
        "last_name" : "Raza",
        "gender" : "Male",
        "grade" : 18
}
{
        "_id" : ObjectId("6290440e7c524c650b7a51c2"),
        "first_name" : "Saira",
        "last_name" : "Daniel",
        "gender" : "Female",
        "grade" : 20
}

一旦我们完成创建集合并用文档填充它,我们可以根据项目要求打印文档值。下面列出了一些场景:

  • 打印集合中所有文档的文档值
  • 仅打印第一个文档的文档值
  • 打印具有自定义属性名称的所有文档的文档值
  • 根据所有文档的指定条件打印文档值

打印集合中所有文档的文档值

示例代码:

> db.teachers.find().forEach(
    function (data) {
        Object.keys(data).forEach(
            function(key) {
                print(key + ': ' + data[key])
            }
        )
        print('\n')
    }
)

输出:

_id: 6290440e7c524c650b7a51c0
first_name: Mehvish
last_name: Ashiq
gender: Female
grade: 18

_id: 6290440e7c524c650b7a51c1
first_name: Tahir
last_name: Raza
gender: Male
grade: 18

_id: 6290440e7c524c650b7a51c2
first_name: Saira
last_name: Daniel
gender: Female
grade: 20

此示例代码使用 find() 方法获取所有 JSON 文档。然后,我们使用 JavaScript 的 forEach() 循环遍历每个文档,并将每个文档作为 data 传递给匿名函数。

在此函数中,我们使用 Object.keys(data) 检索 data 变量包含的特定文档的所有键(也称为属性或字段名称)。

此外,另一个 forEach() 方法用于迭代文档的键(存储在 data 变量中)并调用另一个匿名函数以打印具有相应值的所有键。

仅打印第一个文档的文档值

示例代码:

> let result = db.getCollection('teachers').findOne()
> for (var key in result) {
    if (result.hasOwnProperty(key)) {
        print(key + ': ' + result[key]);
    }
}

输出:

_id: 6290440e7c524c650b7a51c0
first_name: Mehvish
last_name: Ashiq
gender: Female
grade: 18

对于这个示例片段,我们使用 findOne() 方法仅从指定集合中检索第一个文档并将其保存到 result 对象中。

接下来,我们使用 JavaScript 的 for-in 循环遍历 result 对象并返回一个 key 以访问作为 result[key] 的值。

在访问 key 的值之前,我们使用 hasOwnProperty() 方法检查对象(在本例中为 result)是否具有给定属性作为它自己的属性。

打印具有自定义属性名称的所有文档的文档值

示例代码:

> db.teachers.find().forEach(
    function (document) {
        print("FirstName: " + document.first_name +"\n"+
              "LastName: " + document.last_name + "\n"+
              "Grade: " + document.grade)
        print("\n\n")
    }
)

输出:

FirstName: Mehvish
LastName: Ashiq
Grade: 18

FirstName: Tahir
LastName: Raza
Grade: 18

FirstName: Saira
LastName: Daniel
Grade: 20

有时,我们不想获取程序中指定的属性名称,但我们想使用自定义属性名称。如果是这样,此解决方案适合你。

我们使用 find() 方法获取 teachers 集合中的所有文档。然后,遍历每个文档以使用键(也称为字段或属性名称)检索值。

你可能已经注意到,在本示例中,我们没有获取名为 _id 的主键及其值。这是因为我们没有在 print() 语句中指定它,但它仍然存在于 document 变量中。

使用以下代码进行检查。

示例代码:

db.teachers.find().forEach(
    function (document) {
        print(document._id)
        print("\n\n")
    }
)

输出:

ObjectId("6290440e7c524c650b7a51c0")

ObjectId("6290440e7c524c650b7a51c1")

ObjectId("6290440e7c524c650b7a51c2")

让我们看下一节以避免在 Mongo shell 上出现这种情况。

根据指定条件打印所有文档的文档值

示例代码:

> db.teachers.find({}, {"grade": 1, "_id":0}).forEach(
    function(property) {
        print(property.grade)
})

输出:

18
18
20

在这里,我们需要先了解 find() 函数来了解示例代码。我们可以通过不同的方式使用 find() 方法来满足需求;下面列出了一些格式:

  • 使用 find()find({}) 从指定集合中获取所有文档
  • 使用 find({}, {city: 1}) 检索所有文档的 city 属性及其值。
  • 使用 find({}, {city: 1, "_id:0"}) 获取所有文档的 city 属性及其值,但不显示 ObjectId。在这里,将 _id 的值设置为 0(默认为 1)不允许打印 ObjectId

同样,我们使用 find() 方法来检索 grade 属性及其值,而不显示 _id 字段。

但是,我们对每条记录使用 forEach() 循环,仅打印传递给匿名函数的属性值。我们可以使用 JavaScript 的箭头函数优化代码。

示例代码:

db.teachers.find({}, {"grade": 1, "_id":0}).forEach( property => print(property.grade))

输出:

18
18
20

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 MongoDB Shell 中列出所有数据库

发布时间:2023/05/11 浏览次数:180 分类:MongoDB

交互式 Mongo Shell 提供了多个用于获取数据的选项。 本文介绍了在 Mongo Shell 中列出数据库的几种不同方法。

MongoDB 中检查字段包含的字符串

发布时间:2023/05/11 浏览次数:1024 分类:MongoDB

这篇文章解决了如何在 MongoDB 中使用正则表达式来确定字段是否包含字符串。在 MongoDB 中使用正则表达式 正则表达式 (regex) 是定义搜索模式的文本字符串。

在 MongoDB 中 upsert 更新插入

发布时间:2023/05/11 浏览次数:214 分类:MongoDB

在 MongoDB 中,upsert 结合了更新和插入命令。 它可以在 update() 和 findAndModify() 操作中使用。MongoDB 中的 upsert 查询 upsert 采用单个布尔参数。

如何卸载 MongoDB

发布时间:2023/05/11 浏览次数:745 分类:MongoDB

要从您的计算机中卸载 MongoDB,您必须先删除 MongoDB 服务、数据库和日志文件。使用这篇 MongoDB 文章,您将能够从 Ubuntu Linux、Mac 和 Windows 卸载 MongoDB。 请务必保留数据备份,因为一旦卸载,便

在 MongoDB 中存储日期和时间

发布时间:2023/05/11 浏览次数:762 分类:MongoDB

本 MongoDB 教程解释了 Date() 对象是什么以及如何使用 Date() 方法对集合进行排序。 这也将帮助您找到在 MongoDB 中显示和存储日期/时间的最佳方法。

MongoDB 按 ID 查找

发布时间:2023/05/11 浏览次数:1856 分类:MongoDB

MongoDB 中的 find by Id() 函数用于获取与用户提供的 id 相匹配的文档。 如果找不到与指定 ID 匹配的文档,则返回空值。

检查 MongoDB 服务器是否正在运行

发布时间:2023/05/11 浏览次数:247 分类:MongoDB

这篇 MongoDB 教程将告诉您如何检查是否安装了 MongoDB 以及安装的 MongoDB 服务器的版本。 它在 Windows、UBUNTU 和 MAC 等不同的操作系统中实现。

MongoDB 中的分页

发布时间:2023/05/11 浏览次数:174 分类:MongoDB

这篇文章将介绍什么是 MongoDB 中的分页。 为什么在 MongoDB 中需要分页以及在 MongoDB 中完成分页的不同方法或方式是什么。

MongoDB 从查询开始

发布时间:2023/05/11 浏览次数:186 分类:MongoDB

在这篇 MongoDB 文章中,用户将学习如何使用 $regex 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便