`
zc985552943
  • 浏览: 291005 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Babe4ca6-5e6f-33aa-9078-762ee3ccfb7e
云计算--hadoop
浏览量:11866
5e98c2c1-2a82-3388-bc80-7fca0170bb12
redis解说
浏览量:27148
088014c7-4d3f-39ce-b72e-4ebe7046a134
MongoDB读书笔记
浏览量:16003
D2b74847-c860-3e26-96fe-3fa4498d6348
Maven读书笔记
浏览量:27235
688db20f-402d-3a1d-8188-d6153d6c7465
Java通信
浏览量:13675
社区版块
存档分类
最新评论

04_MongoDB_查询文档

阅读更多

find文档

1.find简介

使用find查询集合中符合条件的子集合

db.test.blog.find();

 类似于sql查询

select * from test.blog

 上面的查询是返回多有多有集合,并且是所有键。有时我们也会指定返回部分键,这样方式可以减少IO

> db.test.blog.find({},{"age":1,"name":1});
{ "_id" : 1, "age" : 1, "name" : "joe" }
{ "_id" : ObjectId("533a1c27b653a97435a02030") }
{ "_id" : "2" }

 类似sql查询

select age , name from test.blog

 使用带条件的查询举例:

> db.test.blog.find({"age":1});
{ "_id" : 1, "age" : 1, "like" : [ "eat", "abc" ], "name" : "joe" }

 类似sql查询

select * from test.blog where age = 1

 

2.查询条件

比较操作符:

命令 描述
$lt <
$lte <=
$gt >
$gte >=

 

> db.student.find({age:{$lte:12,$gte:10}});

 类似sql

select * from student where age >= 10 and age <= 12

 $ne:不等,能用于多有类型的数据

> db.student.find({age:{$ne:10}});

 类似sql

select * from student where age != 10

 

3.OR查询

命令 描述
$in 查询一个键的多个值
$or 用来完成多个键值的任意给定值

 

> db.student.find({age:{$in:[10,13]}});
{ "_id" : 0, "name" : "aa0", "age" : 10 }
{ "_id" : 3, "name" : "aa3", "age" : 13 }
{ "_id" : 5, "name" : "aa5", "age" : 10 }
{ "_id" : 8, "name" : "aa8", "age" : 13 }

 类比sql

select * from student where age in (10,13);

 

> db.student.find({"$or":[{"age":{$in:[10,13]}},{"name":"aa7"}]});
{ "_id" : 0, "name" : "aa0", "age" : 10 }
{ "_id" : 3, "name" : "aa3", "age" : 13 }
{ "_id" : 5, "name" : "aa5", "age" : 10 }
{ "_id" : 7, "name" : "aa7", "age" : 12 }
{ "_id" : 8, "name" : "aa8", "age" : 13 }

 类比sql

select * from student where age in (10,13) or name = 'aa0'

 

4.$not

$not是原条件句,可以用在任何其他条件之上

> db.student.find({"age":{$not:{"$mod":[5,1]}}});
{ "_id" : 0, "name" : "aa0", "age" : 10 }
{ "_id" : 2, "name" : "aa2", "age" : 12 }
{ "_id" : 3, "name" : "aa3", "age" : 13 }
{ "_id" : 4, "name" : "aa4", "age" : 14 }
{ "_id" : 5, "name" : "aa5", "age" : 10 }
{ "_id" : 7, "name" : "aa7", "age" : 12 }
{ "_id" : 8, "name" : "aa8", "age" : 13 }
{ "_id" : 9, "name" : "aa9", "age" : 14 }

 $mod:将查询的值除以第一个参数“5”,如果余数等于第二个参数“1”那么返回该值

 

5.null

null可以匹配自身(key对应的值为null),还可以匹配“不存在的”(文档中不存在这个key)。

> db.student.find({"like":null});
{ "_id" : 1, "name" : "aa1", "age" : 11 }
{ "_id" : 2, "name" : "aa2", "age" : 12 }
{ "_id" : 3, "name" : "aa3", "age" : 13 }
{ "_id" : 4, "name" : "aa4", "age" : 14 }
{ "_id" : 5, "name" : "aa5", "age" : 10 }
{ "_id" : 6, "name" : "aa6", "age" : 11 }
{ "_id" : 7, "name" : "aa7", "age" : 12 }
{ "_id" : 8, "name" : "aa8", "age" : 13 }
{ "_id" : 9, "name" : "aa9", "age" : 14 }
{ "_id" : 0, "age" : 10, "like" : null, "name" : "aa0" }

> db.student.find({"like":null,"like":{$exists:true}});
{ "_id" : 0, "age" : 10, "like" : null, "name" : "aa0" }

 说明:$exists:判断键是否存在

 

6.正则表达式

> db.student.find({"name":/aa/});
{ "_id" : 1, "name" : "aa1", "age" : 11 }
{ "_id" : 2, "name" : "aa2", "age" : 12 }
{ "_id" : 3, "name" : "aa3", "age" : 13 }
{ "_id" : 4, "name" : "aa4", "age" : 14 }
{ "_id" : 5, "name" : "aa5", "age" : 10 }
{ "_id" : 6, "name" : "aa6", "age" : 11 }
{ "_id" : 7, "name" : "aa7", "age" : 12 }
{ "_id" : 8, "name" : "aa8", "age" : 13 }
{ "_id" : 9, "name" : "aa9", "age" : 14 }
{ "_id" : 0, "age" : 10, "like" : null, "name" : "aa0" }
> db.student.find({"name":/aa1/});
{ "_id" : 1, "name" : "aa1", "age" : 11 }

 使用/reg/来表示正则

 

7.查询数组

命令 描述
$all 匹配数组中的多个元素
$size 匹配数组的长度
$slice 返回数组中的子集合

 

> db.food.find({"fruit":{$all:["apple","banana"]}});
{ "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
{ "_id" : 3, "fruit" : [ "cherry", "banana", "apple" ] }

> db.food.find({"fruit":"apple"});
{ "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
{ "_id" : 2, "fruit" : [ "apple", "kumquat", "orange" ] }
{ "_id" : 3, "fruit" : [ "cherry", "banana", "apple" ] }

 

> db.food.find({"fruit":{$size:3}});
{ "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
{ "_id" : 2, "fruit" : [ "apple", "kumquat", "orange" ] }
{ "_id" : 3, "fruit" : [ "cherry", "banana", "apple" ] }

 

8.查询内嵌文档

用“.”表示法是查询文档区别于其他文档的主要特点。查询文档可以包含点,来表示深入内嵌文档内部。点表示法也是待插入的文档不能包含"."的原因。

> db.food.insert({"_id":4,"fruit":{"apple":"good","banana":"good"}});
> db.food.insert({"_id":5,"fruit":{"apple":"best","banana":"good"}});
> db.food.find({"fruit.apple":"good"});
{ "_id" : 4, "fruit" : { "apple" : "good", "banana" : "good" } }
> db.food.find({"fruit.apple":"best"});
{ "_id" : 5, "fruit" : { "apple" : "best", "banana" : "good" } }

 

9.$where

如果前面的查询方法都不能实现,那么就轮到$where子句了,用它可以执行任意javascript作为查询的一部分。

分享到:
评论

相关推荐

    navicat121_mongodb_cs_x64+navicat121_mongodb_cs_x86.rar

    而Navicat121_mongodb_cs_x64.exe和Navicat121_mongodb_cs_x86.exe则是Navicat为MongoDB数据库设计的客户端应用程序,允许用户连接到MongoDB服务器,执行查询、数据导入导出、备份、同步、集群管理等任务。...

    Data-Unit_MongoDB_Restore_v2.1.zip

    Data-Unit_MongoDB_Restore适用于磁盘存储故障、勒索病毒删除、误操作删除等导致的数据库丢失恢复。运行工具后将数据文件拖入本窗口即可。也支持扫描分区和裸磁盘,建议扫描磁盘镜像文件,效果更好。 免费版每个集合...

    navicat150_mongodb_cs_x64 官方中文版 win10可视化

    MongoDB 是一个基于分布式文件存储的开源文档数据库系统,设计为处理海量数据并提供高可用性和高性能。它以 JSON 格式的文档作为数据模型,支持动态模式,易于快速开发。MongoDB 的特点是它的灵活性、可扩展性以及对...

    php_mongodb.dll php 7.0下载

    MongoDB是一款高性能、无模式的文档型数据库,它在处理大量数据时表现出色,尤其适合大数据应用场景。PHP是广泛使用的服务器端脚本语言,尤其在Web开发领域占据主导地位。当PHP需要与MongoDB进行交互时,就需要使用...

    MongoDB参考手册.zip_MongoDB_T6U_mongodb中文手册

    MongoDB是一款分布式文档型数据库,以其灵活性、高性能和易扩展性在现代Web开发中占据了重要地位。MongoDB中文手册是开发者必备的参考资料,它详细介绍了MongoDB的各种操作和语法用法,帮助用户深入理解并有效利用这...

    很全的_Mongodb数据库学习文档_与_php操作mongodb

    MongoDB是一种开源的文档型NoSQL数据库,以其高性能、高可用性和易用性而闻名,特别适合处理大量非结构化数据。其核心特性包括但不限于:面向文档的数据模型、动态模式、水平可扩展性以及丰富的查询语言。 - **命名...

    MongoDB_two_MongoDB_

    MongoDB是一种流行的开源、分布式文档型数据库,以其灵活性、高性能和可伸缩性而闻名。在深入探讨MongoDB的学习和设计灵魂之前,我们先来理解MongoDB的基本概念和特性。 MongoDB采用NoSQL数据模型,它不同于传统的...

    mongodb_java_2.6_API

    MongoDB是一款分布式文档数据库系统,以其灵活性、高性能和易扩展性而受到开发者的广泛欢迎。在Java编程环境中,与MongoDB交互主要通过其提供的Java驱动程序。本篇将深入探讨"mongodb_java_2.6_API",即MongoDB 2.6...

    mongodb_READ-AND-WRITE.rar_MongoDB_mongodb读取

    MongoDB是一种流行的开源、分布式文档型数据库,以其灵活性、高性能和易用性而备受开发者青睐。在本压缩包“mongodb_READ-AND-WRITE.rar”中,我们关注的是如何读取文件内容并将其存储到MongoDB数据库中。在这个过程...

    php_mongodb-1.5.5-7.2-ts-vc15-x64.zip

    标题“php_mongodb-1.5.5-7.2-ts-vc15-x64.zip”揭示了这个压缩包是针对PHP的一个扩展,具体来说是用于连接和操作...通过这个扩展,开发者可以在PHP应用中充分利用MongoDB的强大功能,进行数据的存取、查询和处理。

    同步Mongodb数据库.zip_MongoDB_Mongodb 同步数据库

    MongoDB是一款NoSQL数据库,它采用灵活的数据模型,支持JSON格式的文档存储,具有强大的查询能力。其主要特点包括: 1. 高性能:MongoDB使用内存映射技术,数据读写速度快。 2. 高可用性:通过复制集实现数据备份和...

    Python库 | robot_mongodb_library-0.0.4-py3-none-any.whl

    `robot_mongodb_library` 库为Robot Framework提供了一个接口,允许测试工程师执行常见的MongoDB操作,如连接数据库、创建集合、插入和查询文档、更新和删除数据等。以下是一些关键知识点: 1. **Python编程**:这...

    Python库 | sumologic_mongodb_atlas-1.0.6-py3-none-any.whl

    2. **MongoDB**: MongoDB是一个基于分布式文件存储的NoSQL数据库系统,它使用JSON-like文档作为数据结构,支持灵活查询、高可用性和可扩展性。 3. **MongoDB Atlas**: MongoDB Atlas是MongoDB的云数据库服务,提供...

    基于MongoDB实现商品管理系统-项目源码-教程-代码-图片-大全.zip

    006_mongodb的查询部分字段和按条件查询讲解 007_mongodb的多表查询讲解 008_基于mongodb实现商品管理系统之准备工作讲解 009_基于mongodb实现商品管理系统之web层编写讲解 010_基于mongodb实现商品管理系统之...

    mongodb_python连接mongodb_python_MongoDB_

    MongoDB是一种流行的开源、分布式文档型数据库,以其灵活性和高性能而受到广大开发者的青睐。Python作为一门简洁且功能强大的编程语言,与MongoDB结合使用,提供了丰富的数据操作接口。本篇将详细介绍如何使用Python...

    mongodb-docs-2011-01-29_mongodb最新用户手册

    - **Dot Notation**:解释了 MongoDB 中的点符号表示法,这是进行嵌套文档查询的基础。 综上所述,《mongodb-docs-2011-01-29_mongodb最新用户手册》是一份详尽的手册,旨在为用户提供全面的技术支持和指导,覆盖了...

    mongoDB文件存储_java_MongoDB_

    每个文件块都是一个单独的MongoDB文档,存储在两个集合中:`files`集合用于存储文件元数据,如文件名、大小和创建日期;`chunks`集合则存储文件的实际内容。 在Java中,我们可以使用MongoDB Java驱动程序来操作...

    springboot_demo1_springbootmongodb_springboot_MongoDB_

    SpringBoot是Java开发的一个轻量级框架,它简化了Spring应用程序的创建和配置过程,而MongoDB则是一种流行的NoSQL数据库系统,以其文档型数据模型和高性能而著称。接下来,我们将深入探讨如何将这两个技术进行整合。...

    CAC_SpringBoot_MongoDB.rar

    MongoDB是一个高性能、无模式的文档型数据库,特别适合处理大规模非结构化数据。在SpringBoot中,我们可以通过Spring Data MongoDB模块来实现MongoDB的集成,利用其提供的Repository接口进行CRUD操作。MongoDB的优势...

Global site tag (gtag.js) - Google Analytics