3.4.2 文档的基本查询

简介: MongoDB使用`find()`查询数据,支持条件筛选与投影。`find({})`查所有文档,`_id`字段默认存在;可指定条件如`{userid:'1003'}`查询匹配记录,用`findOne()`返回第一条。投影参数控制字段显示,如`{userid:1,nickname:1,_id:0}`仅显指定字段,省略 `_id`。

查询数据的语法格式如下:
db.collection.find(, [projection])
(1)查询所有
如果我们要查询spit集合的所有文档,我们输入以下命令
db.comment.find()

db.comment.find({})
这里你会发现每条文档会有一个叫_id的字段,这个相当于我们原来关系数据库中表的主键,当你在插入文档记录时没有指定该字段, MongoDB会自动创建,其类型是ObjectID类型。
如果我们在插入文档记录时指定该字段也可以,其类型可以是ObjectID类型,也可以是MongoDB支持的任意类型。
如果我想按一定条件来查询,比如我想查询userid为1003的记录,怎么办?很简单!只 要在find()中添加参数即可,参数也是json格式,如下:
db.comment.find({userid:'1003'})
如果你只需要返回符合条件的第一条数据,我们可以使用findOne命令来实现,语法和find一样。如:查询用户编号是1003的记录,但只最多返回符合条件的第一条记录:
db.comment.findOne({userid:'1003'})
(2)投影查询(Projection Query):
如果要查询结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定的字段)。如:查询结果只显示 _id、userid、nickname :
db.comment.find({userid:"1003"},{userid:1,nickname:1})
{ "_id" : "4", "userid" : "1003", "nickname" : "凯撒" }
{ "_id" : "5", "userid" : "1003", "nickname" : "凯撒" }
默认 _id 会显示。如:查询结果只显示 、userid、nickname ,不显示 _id :
db.comment.find({userid:"1003"},{userid:1,nickname:1,_id:0})
{ "userid" : "1003", "nickname" : "凯撒" }
{ "userid" : "1003", "nickname" : "凯撒" }
再例如:查询所有数据,但只显示 _id、userid、nickname :
db.comment.find({},{userid:1,nickname:1})

相关文章
|
6月前
|
存储 NoSQL Linux
2.4 Linux系统中的安装启动和连接
本文介绍在Linux系统部署单机MongoDB用于生产环境的完整步骤,包括下载、解压、目录配置、日志与数据路径设置、配置文件编写及服务启停方法。操作类似Windows,通过配置`mongod.conf`实现后台运行,支持命令行与图形工具连接,并提供防火墙处理与安全关闭服务方案,确保稳定运行。
|
6月前
|
XML NoSQL Java
5.3 技术选型
本节介绍MongoDB的Java连接驱动mongodb-driver及SpringDataMongoDB持久层框架,通过搭建文章微服务工程,配置Spring Boot整合MongoDB,实现项目初始化与启动。
|
6月前
|
存储 NoSQL MongoDB
3.2 数据库操作
MongoDB中使用`use 数据库名`选择或创建数据库,若不存在则自动创建。通过`show dbs`查看所有数据库,`db`查看当前库。集合需插入文档后才真正创建。数据库名须为非空、小写、不超过64字节的UTF-8字符串,不可含特殊字符。保留库包括admin(权限管理)、local(本地数据)和config(分片信息)。
|
6月前
|
安全
2.什么是泛型擦除后保留的原始类型
泛型擦除后生成原始类型,类型参数被替换为限定类型或Object。如`Pair<T>`变为`Pair`,字段和方法中的T均替换为Object;若`T extends Comparable`,则替换为Comparable,确保类型安全与兼容性。
|
6月前
|
Java 调度
ScheduledThreadPoolExecutor解析
ScheduledThreadPoolExecutor继承自ThreadPoolExecutor,支持延时及周期性任务调度。其核心在于ScheduledFutureTask和DelayedWorkQueue:前者通过重设执行时间实现周期性,后者基于延迟队列实现任务的定时触发,结合addWorker机制确保线程池持续运行,从而完成精准调度。
|
6月前
|
NoSQL MongoDB Windows
2-MongoDB单机部署
本文介绍MongoDB在Windows系统的安装与启动方法,包括下载32/64位安装包、解压配置、数据目录创建,并详述命令行和配置文件两种启动方式。强调选择稳定版版本(y为偶数),设置dbPath、日志路径及端口等参数,解决YAML配置中转义字符与Tab缩进问题,确保顺利部署运行。
|
6月前
|
存储 缓存 Java
ThreadLocal
ThreadLocal是线程本地变量,为每个线程提供独立的变量副本,避免线程竞争。每个线程可独享自己的数据,互不干扰。通过get、set、remove方法操作线程私有数据,底层由Thread中的ThreadLocalMap存储,线程结束时自动清理,也可手动调用remove防止内存泄漏。
|
6月前
|
NoSQL MongoDB
3.4.3 文档的更新
MongoDB update语法用于修改集合中的文档,支持覆盖更新与局部更新。使用`$set`可避免字段丢失,`multi: true`实现批量修改,`$inc`则用于数值增减。注意指定查询条件与选项,确保数据准确更新。(238字)
InheritableThreadLocal
ThreadLocal子线程无法继承父线程变量,而InheritableThreadLocal可实现父子线程间数据传递。其原理是在Thread初始化时,复制父线程的inheritableThreadLocals到子线程,通过createInheritedMap创建新的ThreadLocalMap,实现值的继承,适用于需传递上下文的场景。
3.5.3 排序查询
sort()方法用于对查询结果排序,1为升序,-1为降序,可按多字段排序。语法:db.集合名.find().sort({字段:1/-1})。与skip()、limit()联用时,执行顺序为先排序,再跳过,最后限制显示。

热门文章

最新文章