`
阅读更多

     此篇文章简单的记录一下mongodb 的简单查询操作。

 

一、数据准备:

db.persons.insertMany([
    {'userId':1,name:'张三','age':20,'scores':[80,90,100],father : {name:'张三三','age':46}},
    {'userId':2,name:'李四','age':21,'scores':[80,95,98],father : {name:'李四四','age':50}},
    {'userId':3,name:null,'age':22,'scores':[20,40,90]},
    {'userId':4,'age':23,'scores':[60,80,100]},
    {'userId':5,name:'钱七','age':25,'scores':[90,95,100]}
]);

 

二、单个文档,简单文档的查询:

1、返回指定的字段 (返回name和age字段)

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

   注意:1、默认会返回 _id 字段,如果想不要返回,给 _id : 0 即可。

              2、find() 方法的第二个参数指定需要返回的字段,字段:1 表示返回 字段:-1 表示不返回

              3、第二个方法中不可同时出现  字段 :1 和 字段 : -1这种格式,但是  _id 可以是 -1

 

2、查询 name=22 的人员,直接使用 $eq 操作符

db.persons.find({age : 22});
db.persons.find({age:{$eq: 22}});

 

3、查找 name>22 的人员,使用 $gt 操作符

db.persons.find({age:{$gt: 22}});

 

4、查找 name>=22 的人员,使用 $gte 操作符

db.persons.find({age:{$gte: 22}});

 

5、查找 name<22 的人员,使用 $lt 操作符

db.persons.find({age:{$lt: 22}});

 

6、查找 name<=22 的人员,使用 $lte 操作符

db.persons.find({age:{$lte: 22}});

 

7、查找 name>20 && name<=22 的人员

db.persons.find({age:{$gt:20,$lte: 22}});

 

8、查找 name 不是 李四 的人员,使用 $ne 操作符

db.persons.find({name:{$ne: "李四"}})


9、查询 name=张三 && age>20 的人 ,使用 $and 操作符

db.persons.find({name:"张三",age:{$gt: 20}});
db.persons.find({$and: [{name:"张三"},{age:{$gt: 20}}]})

 

10、查询 name=张三 || age>20 的人 ,使用 $or 操作符

db.persons.find({$or: [{name:"张三"},{age:{$gt: 20}}]})

 

11、查询 name不是张三&&age不是>20的人,使用 $nor 操作符,即$or的取反

db.persons.find({$nor: [{name:"张三"},{age:{$gt: 20}}]})

 

12、查找 userId > 1 and ( name='李四' or age = 23 ) 的用户,即 $and $or 操作符的混合使用

 

db.persons.find({
    userId : {$gt : 1},
    $or : [{name : '李四'},{age : 23}]
});

db.persons.find({
    $and : [{
        userId : {$gt : 1},
        $or : [{name : '李四'},{age : 23}]
    }]
});
 

13、查找 name 不是李四 的人,使用 $not 操作符

db.persons.find({name:{$not: {$eq: "李四"}}});
db.persons.find({name:{$not: /^李四$/}})

   注意:1、$not 作用在其它条件之上,用于取反操作

              2、$not 用于查找不是这个值的数据,如果某个记录中没有$not查找的字段,该记录也会出来。

              3、$not 不可作为顶级操作符,即find($not:{})这种形式

 

14、查找 age%5=0 的人,使用 $mod 操作符

db.persons.find({age:{$mod: [5, 0]}})

   解释:表示查询出 age 和 5进行求模,余数为0 的记录。

 

15、查询 age in (20,30,25) 的人,使用 $in 操作符

db.persons.find({age:{$in: [20,30,25]}})


    注意: 官网建议,当在同一个字段上进行查询时,应该使用$in操作符,而不是 $or 操作符,即能用 $in完成就不要使用$or完成。

 

16、查询 age not in (20,30,25) 的人,使用 $nin 操作符

db.persons.find({age:{$nin: [20,30,25]}})

 

17、$all 表示键需要匹配所有的值

    * 查找 age = 20 && age = 25 的人,使用 $all 操作符

db.persons.find({age:{$all: [20,25]}})

    * 查找 scores 同时存在 80 和 90 的人,使用 $all 操作符

db.persons.find({scores:{$all: [80,90]}})

   注意:1、$all 一般用来匹配数组中的元素。

              2、$all 匹配元素必须都要存在,和数组中的元素的顺序无关。

 

18、只查询 name 字段存在 && 值不为李四的记录,使用 $exists 操作符

db.persons.find({name:{$exists: true,$nin: ["李四"]}})

 

19、匹配 name=null 的情况,默认情况下会匹配出 name 不存在的记录

   * 匹配 name=nullname不存在的情况

db.persons.find({name:null})

   * 只匹配 name=null 的记录

db.persons.find({name:{$eq: null,$exists: true}})

 

20、正则表达式的使用,查找 name like '张%' 的记录,使用正则表达式

db.persons.find({name:/^张/})

 

21、查询总共有多少人。

db.persons.find({}).count()

 

三、数组的匹配

1、单个元素的匹配,格式 {key:valie} , 比如查询 scores 中存在 80 的元素

db.persons.find({scores:80})

 

2、多个元素的匹配,格式{key:{$all:[xxx,yyy]}},比如:查询 scores 中同时存在 80和90的元素,80和90在scores中的顺序无所谓,没有影响。

db.persons.find({scores:{$all: [80,90]}})

 

3、匹配数组中第几个角标对应的值是多少,比如:查询 scores中的第二个元素 90

db.persons.find({"scores.1":90})

   注意:数组角标是从 0 开始。

 

4、查询指定长度的数组,比如:查询 scores 数组的长度 =3 的数组

db.persons.find({"scores":{$size:3}})

 

5、返回数组中的子集,使用 $slice 操作符,正数表示返回前面多少条,负数表示返回后面多少条,区间表示跳过多少条和返回多少条,如下图所示:

 

6、查询数组中的某一个元素,要符合给定查询条件,使用$elemMatch。比如:查询 name=张三 scores > 90 && scores < 90,结果如下图所示:

 

 四、内嵌文档的查询:

1、查询 father.name=张三三 的文档

db.persons.find({"father.name":"张三三"})

2、内嵌文档的查询,和普通的文档查询是一样的。只是内嵌文档需要 写 "xxx.yyy" 需要加上双引号。

 

五、分页查询:

db.persons.find().skip(2).limit(2)

    skip:  表示跳过多少条记录

    limit:  表示需要返回多少条记录

 

六、排序操作

db.persons.find({}).sort({age:1})

    注意:1、age : 1 表示根据 age 正序排序

               2、age : -1 表示根据 age 倒序排序

               3、如果需要多个字段排序,中间以逗号分隔即可。

 

 

  • 大小: 52.2 KB
  • 大小: 684.3 KB
  • 大小: 527.6 KB
  • 大小: 19.5 KB
分享到:
评论

相关推荐

    MongoDB命令查询.txt

    3. **简单的数据检索**:如果不需要复杂的查询逻辑,`findOne()`足以满足需求。 ### 总结 通过以上对`db.tablename.findOne({})`的详细介绍,可以看出这是一个非常实用的MongoDB查询命令,它可以帮助开发者轻松地...

    MongoDB之查询详解

    基本的条件查询可以通过简单的键值对来进行。例如,查询所有`age`字段等于27的文档: ```javascript db.users.find({"age": 27}) ``` ##### 3.2 复合条件查询 当需要组合多个条件时,可以将多个键值对放在同一个...

    mongo2SQL:Mongodb 查询到 sql 查询转换器

    Mongodb 查询到 sql 查询转换器。 示例:在:db.user.find({name: 'julio'}); out: SELECT * FROM user WHERE name = 'julio'; 在:db.user.find({_id: 23113},{name: 1, age: 1}); out: SELECT name, age FROM ...

    MongoDB入门教程 + 架构简析 + java使用MongoDB的简单程序

    在"Java使用MongoDB的简单程序"中,我们将学习如何使用Java驱动程序连接到MongoDB数据库。Java驱动程序提供了一套API,使得开发者可以轻松地进行数据操作。基本步骤包括:创建MongoClient实例以连接到MongoDB服务器...

    mongodb 简易系统.zip

    4. **查询语言**:MongoDB提供了强大的查询语言,可以进行复杂的数据筛选和聚合操作。 5. **分片与复制**:为应对大数据量,MongoDB支持数据分片和副本集,提高读写性能和数据安全性。 **Node.js**: Node.js是一个...

    MongoDB数据库简单介绍

    ### MongoDB数据库简单介绍 #### MongoDB概述 MongoDB是一款开源、基于分布式文件存储的NoSQL数据库系统,它使用C++语言编写。与传统的关系型数据库不同,MongoDB采用文档数据模型来存储数据,这种数据模型非常灵活...

    mongodb java简单demo

    本篇将详细介绍如何使用Java连接MongoDB,以及进行基本的数据操作:创建集合、添加文档、修改文档、查询文档和删除文档。 首先,为了连接MongoDB,我们需要引入MongoDB的Java驱动程序依赖。在Maven项目中,可以在...

    使用C#访问MongoDB实现简单增删改查

    在实际应用中,可能还需要处理更复杂的数据操作,如聚合查询、索引创建等,这些可以通过MongoDB的C#驱动提供的API进一步实现。同时,注意在进行数据库操作时要确保数据的完整性和安全性,避免出现未预期的错误或数据...

    mongodb管理工具

    - 查询构建器:帮助用户构建和执行MongoDB查询语句。 - 监控工具:显示服务器状态,如内存使用、磁盘空间和操作统计等。 在实际工作中,根据需求和环境,开发者和DBA可能会选择其中一个或两者结合来管理MongoDB...

    MongoDB企业级分片集群搭建视频.zip

    12 Python简单操作MongoDB.mp4 13 Python获取MongoDB的状态信息.mp4 14 MongoDB分片集群之configsvr实战.mp4 15 MongoDB分片集群之router实战.mp4 16 MongoDB分片集群之sharedsvr实战.mp4 17 MongoDB分片集群的使用...

    MongoDB的安装文件,补丁以及可视化工具

    MongoDB是一种NoSQL数据库,它不采用传统的表格和列结构,而是使用JSON格式的文档(BSON)来存储数据,这使得处理复杂的数据结构变得简单。它的分布式特性支持水平扩展,可以通过添加更多的服务器来提高性能和存储...

    NoSQLBooster for MongoDB

    1. **图形化用户界面(GUI)**:NoSQLBooster提供了一个直观的GUI,允许用户通过简单的拖放操作和清晰的布局来执行查询、插入、更新和删除操作,极大地简化了MongoDB数据库的管理工作。 2. **查询构建器**:对于不...

    MongoDB Java Driver 简单操作

    ### MongoDB Java Driver 简单操作详解 #### 一、简介 MongoDB 是一款非常流行的文档型数据库系统,因其灵活性和高性能而被广泛应用于多种场景之中。为了方便开发者使用 Java 进行开发,MongoDB 提供了官方的 Java ...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...

    MongoDB 位置信息存储及查询

    在 MongoDB 中,位置信息通常以坐标对(即经度和纬度)的形式存储,可以是简单的点,也可以是复杂的多边形。对于 C# 开发者来说,可以通过 MongoDB .NET 驱动程序来操作这些数据。以下是一些关于 MongoDB 位置信息...

    springboot整合mongodb+redis+mybatis+mysql

    MySQL 是一个广泛使用的开源关系型数据库管理系统,适用于需要事务处理和复杂查询的应用。SpringBoot 整合 MySQL 通常使用 `spring-boot-starter-jdbc` 或 `spring-boot-starter-data-jpa` 依赖,其中 JPA(Java ...

    Express +MongoDB 简易后台登录系统.zip

    在本项目"Express +MongoDB 简易后台登录系统.zip"中,我们将会探讨如何使用Express框架和MongoDB数据库构建一个简单的Web后台登录系统。这个系统是针对毕业设计或Web开发实践的需求而设计的,它涉及到Node.js的后端...

    基于SphinxMySQL和MongoDB的简易论坛

    【基于SphinxMySQL和MongoDB的简易论坛】 在IT领域,构建一个简易论坛涉及到多个关键技术,其中Sphinx、MySQL和MongoDB是实现高效数据管理和检索的重要工具。本论坛设计利用了这些技术的优势,以提供一个功能完备且...

    Spring Data MongoDB中文文档

    - **Spring Data MongoDB** 是 **Spring Data** 家族的一员,它提供了一种简单的方式来与 MongoDB 数据库进行交互。通过 Spring Data MongoDB,开发者可以利用 Spring 的强大功能轻松地进行 NoSQL 数据库的操作。 - ...

    greenleaf:MongoDB的简单查询生成器

    :seedling: greenleaf-用于MongoDB的简单,类型安全且易于使用的查询生成器 安装 要安装使用: go get github.com/slavabobik/greenleaf 快速范例 package main import ( "context" "github....

Global site tag (gtag.js) - Google Analytics