使用 MongoDB Shell 打印文档值
打印文档的价值也是一项令人难以置信的技能,我们可以根据项目的需要从中受益。本教程使用 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
相关文章
比较 MongoDB 中的字段
发布时间:2023/04/21 浏览次数:51 分类:MongoDB
-
在本文中,我们将了解如何比较 MongoDB 中的两个字段。 此外,我们将看到一个相关的示例和解释,以使主题更容易理解。
清除或删除 MongoDB 中的集合
发布时间:2023/04/21 浏览次数:147 分类:MongoDB
-
本篇文章将告诉大家如何删除 MongoDB 数据库中的集合以及删除 MongoDB 中的集合的不同方法。
向 MongoDB 集合中的每个文档添加新字段
发布时间:2023/04/21 浏览次数:107 分类:MongoDB
-
您将在这篇文章中了解 $set 和 $setOnInsert 操作。 此外,利用这两个运算符,快速描述了向 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 中的稀疏索引。 此外,我们将提供一个相关示例并进行解释,以使该主题更容易理解。