Mongodb 的查询部分字段和按条件查询讲解|学习笔记

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 快速学习 Mongodb 的查询部分字段和按条件查询讲解

开发者学堂课程【场景实践 - 基于MongoDB实现商品管理系统Mongodb的查询部分字段和按条件查询讲解】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/728/detail/13001


Mongodb的查询部分字段和按条件查询讲解


内容介绍:

一、查询部分字段

二、查询条件

 

在做查询之前我们先向数据库插入一些数据,在插入之前先删除数据库表persons的以前的数据,然后在插入:

1)删除数据库表 persons

db.persons.drop()

2)将如下数据插入到数据库itcast中的表persons:

db. persons.drop()

true

var personArr = [{

name : "zhangsan",

age: 23,

email : "17161717@qq.com",

c:89,m: 78,e : 99,

country : "china",

books : ["Js","JAVA” , "MONGODB"]

},

{

name : ""linchong",

age: 20,

email:"234681717eqq.com",

c:82,m:38,e:69,

country : "china",

books : [ "Js","PHP","MONGODB""]

},

{

name: "1uzhishen",

age:23,

email:"171615151@qq.com" ,

c:23,m:98,e: 100,

country : "china",

books : [ "3query" , "JAVA", "MONGODB"]

},

……

{

name : "wuyong",

age:32,

email:“17827277@qq.com",

c:76,m:88,e:99,

country : "uSA",

books: [“ct","hibernate","c"j

}]

for(var i=0;i<personArr.length;i++){

db.persons.insert(personArr[i])

}

之后进行查询:

db.persons.find()

{"_id”: ObjectId("5aa8debebaf95f1915073eaf"),"name" : " zhangsan","age”:23,"email":"17161717@qqom","c”:89,”m”: 78,"e" : 99,"country" : "china", "books": [“Js",“JAVA","MKONCODB”]}

{"_id":0bjectId("5aa8debebaf95f1915073eb0"),"nane”:"linchong"," age" : 20,"emai1":"234681717@qq.com" "c”:82,“m”:38,“e”:69,“country”:“china”,“books”:[“JS”,“PHP”,“MNGDB”]}

{"_id" : ObjectId("5aa8debebaf95f1915073eb1"),"name": "1uzhishen",“age: 23,"email”:"171615151@qq.com"c": 23,“m”:98,"e":100,"country": "china","books":[“Jquery"' “"JAVA",“ MONGODB" ] }

{"_id” : Objectid("5a8debebaf9511915073eb2"),"name": " songjiang", " age" : 33, " enaj1":"1781918717@qq.com","c" :89,“m”: 78,"e" : 99," country": " china", "books" : [ "mysql","JAVA",“MIONGODB"]}

{"_id" : ObjectId("5aa8debebaf95f1915073eb3"), " mnane": "wusong , " age”: 28, " email”:“"123456@qq.com " c": 76, "h”: 32,"e” : 99," country" :"Korea","books" : [ “C++","JAVA",“C"]}

{"_id":ObjectId("5aa8debebaf95f1915073eb4"),"name": likui","age" : 43, "email”:"234567@qq.con" "c”:23,"m":46,“e”:10,“country”:“USA”,“books”:[“jsp”,“JAVA”,“MNGDB”]}

{"_id" : ObjectId("5aa8debebaf95f1915073eb5*7),,"nane" : " shigian","age": 23," email" :"8171717@qq.com","c": 19, "m" : 88,“e” : 99,"country": "china",“books" : [ "mysql","oracle",“MONGODB"]}

{"_id" : 0biectId("5aa8debebaf9511915073eb6"),"name" : "wuyong", " age":32, " email”:"17827277@qq.com , " "c”: 76,"m":88,"e”:99,"country":"USA",“books" : [ “C++","hibernate",“C”]}

 

一、查询部分字段

需求:查询上述persons表中的name,country,age字段

在关系型数据库中,直接select+就可以,接下来讲述在Mongodb中如何查询。

1.指定返回的键

db.[collectionName].find({条件},{键指定})

数据准备→persons.json

(1)查询出所有数据的指定键(name ,age ,country)

db.persons.find({},{}iname:1.age:1,country:1,_id:0})

分析:由于这里只想查询name,country,age字段,所以第一个参数,条件可以不用书写,表示空对象,表示查询全部。

第二个参数表示要查询谁,如果不想查询谁就设置为0,查询谁,就设置为1。

注意:如果不想查询id,就写id:0.如果不写,会默认查询。

具体的代码如下所示:

db. persons.find({}, {name : 1, age:1, country:1})

{"_id" : ObjectId("5aa8de'ebaf95f1915073eaf" ),"name": "znangsan","age”: 23,"coumtry": "china"}

{"_id" :ObjectId("5aa8de'ebaf95f1915073ea0" ),"name": "lichong","age" : 20, " country": "china"}

{"_id" :ObjectId("5aa8de'ebaf95f1915073ea1" ) ,"name": "luzhishen","age" : 23, " country": "china"}

{"_id" :ObjectId("5aa8de'ebaf95f1915073ea2" ) ,"name": "songjiang","age" : 33, " country": "china"}

{"_id" :ObjectId("5aa8de'ebaf95f1915073ea3" ) ,"name": "wusong","age" : 28," country": "Korea"}

{"_id" :ObjectId("5aa8de'ebaf95f1915073ea4" ) ,"name": "likui","age" : 43, " country": " USA "}

{"_id" :ObjectId("5aa8de'ebaf95f1915073ea5" ) ,"name": "shiqian","age" : 23, " country": "china"}

{"_id" :ObjectId("5aa8de'ebaf95f1915073ea6" ) ,"name": "wuyong","age" : 32, " country": " USA "}

如果不写id:0,会默认查询id;不想查询id,写id:0

db. persons.find({}, {name : 1, age:1, country:1,_id:0})

{"name: znangsan","age”: 23,"coumtry": "china"}

{"name": "lichong","age" : 20, " country": "china"}

{"name": "luzhishen","age" : 23, " country": "china"}

{"name": "songjiang","age" : 33, " country": "china"}

{"name": "wusong","age" : 28," country": " Korea "}

{"name": "likui","age" : 43, " country": "USA"}

{"name": "shiqian","age" : 23, " country": "china"}

{"name": "wuyong","age" : 32, " country": "USA"}

 

二、查询条件

 

                                        比较操作符

$lt

<

{age:{$gte:22,Slte:27}}

$Ite

<=

 

$gt

>

 

$gte

>=

 

$ne

!=

{age:{$ne:26}}

 

{age:{$gte:22,Slte:27}} 里是并且的关系,如果是或者,写or。

需求:查询年龄在30到45之间的学生

分析:语法格式:db.persons.find({age:{gte .30,lte:45}},{_id:0,

name:1,age:1})

具体代码如下:

db.persons.find({age:{$gte .30,$lte:45}},{_id:0,name:1,age:1})

{"name": "songjiang","age" : 33, " country": "china"}

{"name": "likui","age" : 43, " country": "USA"}

{"name": "wuyong","age" : 32, " country": "USA"}

1.包含或不包含

$in/$nin

例:查询国籍是中国或美国的学生信息

db.persons.find({country:{$in:["USA","China"]}})

说明:关于包含或者不包含,要求后面必须是数组。

代码如下所示:

db.persons.find({country{$in:["USA","china"]}},{_id:0,name:1,age:1})//查询国家国籍是USA或中国的人年龄和姓名

{"name: znangsan","age”: 23}

{"name": "lichong","age" : 20 }

{"name": "luzhishen","age" : 23}

{"name": "songjiang","age" : 33}

{"name": "likui","age" : 43}

{"name": "shiqian","age" : 23}

{"name": "wuyong","age" : 32 }

相关文章
|
6月前
|
NoSQL 测试技术 MongoDB
微服务——MongoDB实战演练——根据上级ID查询文章评论的分页列表
本节介绍如何根据上级ID查询文章评论的分页列表,主要包括以下内容:(1)在CommentRepository中新增`findByParentid`方法,用于按父ID查询子评论分页列表;(2)在CommentService中新增`findCommentListPageByParentid`方法,封装分页逻辑;(3)提供JUnit测试用例,验证功能正确性;(4)使用Compass插入测试数据并执行测试,展示查询结果。通过这些步骤,实现对评论的高效分页查询。
82 0
|
11月前
|
存储 NoSQL MongoDB
掌握MongoDB索引优化策略:提升查询效率的关键
在数据库性能调优中,索引是提升查询效率的利器。本文将带你深入了解MongoDB索引的内部工作原理,探讨索引对查询性能的影响,并通过实际案例指导如何针对不同的查询模式建立有效的索引。不仅将涵盖单一字段索引,还会探讨复合索引的使用,以及如何通过分析查询模式和执行计划来优化索引,最终实现查询性能的最大化。
|
8月前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过MongoDB Atlas Data Lake或Apache Drill,可以在Java中使用SQL语法查询MongoDB数据。这两种方法都需要适当的配置和依赖库的支持。希望本文提供的示例和说明能够帮助开发者实现这一目标。
227 17
|
9月前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
338 9
|
11月前
|
存储 NoSQL MongoDB
MongoDB 查询分析
10月更文挑战第21天
74 1
|
11月前
|
NoSQL MongoDB 索引
MongoDB 覆盖索引查询
10月更文挑战第21天
104 1
|
11月前
|
SQL NoSQL MongoDB
MongoDB 查询文档
10月更文挑战第15天
295 1
|
11月前
|
人工智能 NoSQL 机器人
MongoDB Atlas与YoMio.AI近乎完美适配:推理更快速、查询更灵活、场景更丰富
随着MongoDB的新发布和革新,YoMio.AI的“闪电式发展”值得期待。
|
12月前
|
SQL NoSQL JavaScript
04 MongoDB各种查询操作 以及聚合操作总结
文章全面总结了MongoDB中的查询操作及聚合操作,包括基本查询、条件筛选、排序以及聚合管道的使用方法和实例。
2105 0
|
C# 微服务 Windows
模块化革命:揭秘WPF与微服务架构的完美融合——从单一职责原则到事件聚合器模式,构建高度解耦与可扩展的应用程序
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中借鉴微服务架构思想,实现模块化设计。通过将WPF应用分解为独立的功能模块,并利用事件聚合器实现模块间解耦通信,可以有效提升开发效率和系统可维护性。文中还提供了具体示例代码,展示了如何使用事件聚合器进行模块间通信,以及如何利用依赖注入进一步提高模块解耦程度。此方法不仅有助于简化复杂度,还能使应用更加灵活易扩展。
275 0