MongoDB数据库基础 查询文档的相关操作介绍
MongoDB是一个开源的NoSQL数据库,它使用BSON(类似于JSON)格式存储数据,在MongoDB中,我们可以使用查询语句来检索和操作文档,本文将介绍MongoDB中查询文档的相关操作。
1、基本查询
基本查询是MongoDB中最简单的查询方式,它可以根据指定的条件筛选出符合条件的文档,基本查询可以使用以下语法:
db.collection.find(query, projection)
collection
是要查询的集合名称,query
是查询条件,projection
是投影参数,用于指定返回的字段。
我们有一个名为students
的集合,包含学生的姓名、年龄和成绩等信息,如果我们想要查询所有年龄大于等于18岁的学生,可以使用以下查询语句:
db.students.find({"age": {$gte: 18}})
2、投影查询
投影查询可以让我们指定返回的字段,而不是返回整个文档,这可以提高查询性能,减少数据传输量,投影查询可以使用以下语法:
db.collection.find(query, {field1: 1, field2: 1, ...})
field1
、field2
等是要返回的字段名,1表示要返回该字段,0表示不返回。
我们想要查询所有学生的姓名和成绩,可以使用以下查询语句:
db.students.find({}, {"name": 1, "score": 1})
3、限制结果数量
我们只需要查询到部分结果,MongoDB提供了限制结果数量的选项,可以使用以下语法:
db.collection.find(query).limit(number)
number
是要返回的结果数量。
我们想要查询前10个年龄最大的学生,可以使用以下查询语句:
db.students.find().sort({"age": 1}).limit(10)
4、排序查询
排序查询可以让我们将结果按照某个字段进行排序,MongoDB支持升序和降序排序,排序查询可以使用以下语法:
db.collection.find(query).sort({field: 1}) // 升序排序,1表示降序排序
field
是要排序的字段名。
我们想要查询所有学生的成绩并按照成绩降序排序,可以使用以下查询语句:
db.students.find().sort({"score": 1})
5、分组查询
分组查询可以让我们将结果按照某个字段进行分组,并对每个分组进行聚合操作,分组查询可以使用以下语法:
db.collection.aggregate([{$group: {_id: "$field", count: {$sum: 1}}}])
field
是要分组的字段名。_id
是分组后的标识符,count
是对每个分组的元素数量进行求和。
我们想要统计每个班级的学生人数,可以使用以下查询语句:
db.students.aggregate([{$group: {_id: "$class", count: {$sum: 1}}}])
6、连接查询
连接查询可以让我们将多个集合的数据进行关联,MongoDB支持内连接、左连接和右连接,连接查询可以使用以下语法:
db.collection1.aggregate([{$lookup: {from: "collection2", localField: "localField", foreignField: "foreignField", as: "outputField"}}])
collection1
和collection2
是要关联的集合名称,localField
和foreignField
是关联字段名,outputField
是输出字段名。
我们有两个集合:students
和courses
,分别存储学生信息和课程信息,我们想要查询每个学生所选的课程,可以使用以下查询语句:
db.students.aggregate([{$lookup: {from: "courses", localField: "_id", foreignField: "student_id", as: "courses"}}])
7、相关技术介绍表格:MongoDB与关系型数据库对比表(请参考附表)
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/508373.html