迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > 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 中的字段

发布时间:2023/04/21 浏览次数:51 分类:MongoDB

在本文中,我们将了解如何比较 MongoDB 中的两个字段。 此外,我们将看到一个相关的示例和解释,以使主题更容易理解。

清除或删除 MongoDB 中的集合

发布时间:2023/04/21 浏览次数:147 分类:MongoDB

本篇文章将告诉大家如何删除 MongoDB 数据库中的集合以及删除 MongoDB 中的集合的不同方法。

MongoDB 截断集合

发布时间:2023/04/21 浏览次数:178 分类:MongoDB

可以根据需要选择两个选项之一来截断下面的集合。 在今天的文章中,我们将学习如何在 MongoDB 中截断集合。

删除 MongoDB 中的重复项

发布时间:2023/04/21 浏览次数:151 分类:MongoDB

在本文中,我们将了解如何删除 MongoDB 中的重复条目,并且我们还将看到一个带有适当解释的示例,以使主题更容易理解。

使用 NodeJS 检查 MongoDB 中是否存在集合

发布时间:2023/04/21 浏览次数:194 分类:MongoDB

在本文中,我们将检查 MongoDB 数据库中是否存在一个集合,并且我们还将查看与主题相关的示例,以使主题更容易理解。 为此,我们将使用 Node.js。

MongoDB 中的唯一索引

发布时间:2023/04/21 浏览次数:144 分类:MongoDB

在这篇教学文章中,您将了解唯一索引、它们是什么以及如何在 MongoDB 中使索引唯一。 此外,还简要详细地解释了使用户的电子邮件在 MongoDB 中唯一。

在 MongoDB 中创建索引

发布时间:2023/04/21 浏览次数:104 分类:MongoDB

索引有助于有效解决查询。 如果没有索引,MongoDB 必须遍历集合中的每个文档才能找到与查询匹配的文档。因此,在今天的文章中,我们将学习如何在 MongoDB 中创建索引。

MongoDB 中的稀疏索引

发布时间:2023/04/21 浏览次数:142 分类:MongoDB

在本文中,我们将讨论 MongoDB 中的稀疏索引。 此外,我们将提供一个相关示例并进行解释,以使该主题更容易理解。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便