MongoDB cursor.forEach() 方法
forEach()
方法是 MongoDB 中用于对查询结果进行迭代操作的方法之一。它可以让开发人员对查询结果进行自定义的迭代操作,例如计算、筛选、格式化等等。
语法
forEach()
方法的语法如下:
db.collection.find().forEach(function)
其中,cursor
是 MongoDB 的游标对象,function
是一个回调函数,用于对查询结果进行自定义操作。
使用场景
forEach()
方法适用于需要对查询结果进行自定义迭代操作的场景,例如计算查询结果的总数、对查询结果进行格式化等等。在实际应用中,forEach()
方法常常和其他 MongoDB 查询方法一起使用,例如 find()
、aggregate()
等等。
示例
示例 1
以下是使用 forEach()
方法对查询结果进行自定义操作的示例:
假设我们有一个名为 users
的集合,其中包含了一些用户信息,例如用户名、年龄、性别等等。我们可以使用以下代码查询年龄大于等于 18 岁的用户,并计算他们的平均年龄:
var totalAge = 0
var count = 0
db.users.find({ age: { $gte: 18 } }).forEach(function (user) {
totalAge += user.age
count++
})
var avgAge = totalAge / count
print("The average age of users over 18 is " + avgAge)
在这个示例中,我们首先定义了两个变量 totalAge
和 count
,用于保存年龄总和和用户数量。然后,我们使用 find()
方法查询年龄大于等于 18 岁的用户,并对查询结果使用 forEach()
方法进行迭代操作。在迭代操作中,我们对每个用户的年龄进行累加,并将用户数量加 1。最后,我们根据累加的年龄总和和用户数量计算出平均年龄,并使用 print()
方法输出结果。
示例 2
以下是使用 forEach()
方法对查询结果进行格式化操作的示例:
假设我们有一个名为 articles
的集合,其中包含了一些文章信息,例如标题、作者、发布日期等等。我们可以使用以下代码查询最近发布的 5 篇文章,并将其格式化为 HTML:
var html = ""
db.articles
.find()
.sort({ date: -1 })
.limit(5)
.forEach(function (article) {
html += "<h1>" + article.title + "</h1>"
html +=
"<p>Published by " +
article.author +
" on " +
article.date.toDateString() +
"</p>"
html += "<p>" + article.content + "</p>"
html += "<hr>"
})
print(html)
在这个示例中,我们首先定义了一个变量 html
,用于保存格式化后的 HTML 代码。然后,我们使用 find()
方法查询所有文章,并按照发布日期倒序排列。接着,我们使用 limit()
方法限制查询结果的数量为 5。最后,我们使用 forEach()
方法遍历查询结果,并将每篇文章的标题、作者和发布日期以 HTML 格式添加到 html
变量中。
结论
forEach()
方法可以遍历查询结果中的每个文档,对每个文档执行特定的操作,例如对查询结果进行格式化、修改等操作。同时,我们需要注意在使用 forEach()
方法时,应尽量避免对大量文档进行操作,以免影响性能。