`
郭亲华
  • 浏览: 49245 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Nosql之Mongodb 2 高级查询

 
阅读更多
高级查询

find()

1 查询所有记录

         db.users.find()

2 查询name为apple的记录

         db.users.find({“name”:”apple”})

3 查询country为china,gender为1的记录

         db.users.find({“country”:”china”,” gender”:1})



限制结果集

对应到标准sql, 之前是select * from, 现在需要的是select name from …

1 查询name为apple,并且结果只显示name

         db.users.find({“name”:”apple”}, {“name”:true})



---------------------------------------------------------------------------------------------------------------------------

注:后面这个参数{name:true}代表只显示name,如果有一个设置true,那么其他未设置的都是默认false,但是_id字段是默认true的,如果不想显示_id,可以这么写:

db.users.find({“name”:”apple”}, {“name”:true,” _id”:false})

---------------------------------------------------------------------------------------------------------------------------



2 查询所有记录,并且结果只显示name和country

         db.users.find(null, {“name”:true, “country”:true, “_id”:false})

findOne()

顾名思义,只显示查询到的第一条记录,类似于select top 1 …

db.users.findOne({“gender”:0})

limit()

类似于sqlserver中的top

         db.users.find({“gender”:0}).limit(2);

条件操作符 <, <=, >, >=, !=

$lt   小于      (less than)

$lte  小于等于  (less than equals)

$gt   大于      (greater than)

$gte  大于等于  (greater than equals)

$ne  不等于    (not equals)



查出age大于30的记录

db.users.find({“age”:{$gt:30}})

查出age>=30 且 <=40的记录

         db.users.find({“age”:{$gt:30, $lt:40}})

$exists

用于判断字段是否存在,比如我们向users集合里面添加一条记录,只有name属性

db.users.insert({name:”testExists”})



现在我们查出不存在age字段的记录

db.users.find({“age”:{$exists:false}})



查出有age字段但没有gender字段的记录

db.users.find({“age”:{$exists:true},” gender”:{$exists:false}})

null值的处理

需要注意的null与exists的区别

null指的是字段为空或者字段不存在

exists指的是字段是否存在



比较下面两条记录

{“name”:null,” age”:44}

{“age”:45}



如果使用null查询  db.xxx.find({name:null}) 则会查出上面两条记录

但是我们只想找出存在name字段并且其为空的记录,可以这么查询

db.xxx.find({“name”:{$exists:true, $in:[null]}});



$mod

取模,比如我们查询年龄取模10等于1的记录,应该是年龄为1,11,21,…

db.users.find({“age”:{$mod:[10,1]}})

$in & $nin

这个类似于标准sql的in与not in



查询age为23或者24的记录

db.users.find({“age”:{$in:[23, 24]}})



查询age不为23或者24的记录

db.users.find({“age”:{$nin:[23, 24]}})

$not

可以用在任何其他条件之上

db.users.find({$not:{“age”:{$gt:25}}})

$or

查询年龄为32或者name为zhangsan的记录

db.users.find({$or:[{“name”:”zhangsan”}, {“age”:32}]})

数组操作

假设我们有下面两个document

${“name”:”zhangsan”,” booksNumber”:[101, 102, 103]}

${“name”:”lisi”, “booksNumber”:[101, 103]}

$all

db.users.find({“booksNumber”:{$all:[101, 102]}});

那么就能查出第一条记录,它需要满足里面所有的条件

$size

我们需要查询只有booksNumber里面只有两个的记录

db.users.find({“booksNumber”:{$size:2}})

count()

查询总记录数

db.users.find().count()



注:如果我们使用了limit

db.users.find().limit(3).count() 这里是取前三条记录,但是调用count()后还是显示总记录数,如果我们需要返回被限制后的记录数

db.users.find().limit(3).count(true)即可

sort()

这也是个顾名思义的操作,排序: 1 代表升序  -1  代表降序



按名字进行升序排序

db.users.find().sort({name:1})



先按名字升序,再按年龄降序

db.users.find().sort({name:1, age:-1})

distinct()

查询年龄小于等于50所有的name并去除重复

db.users.distinct(“name”, {“age”:{$lte:50}})

skip()

这一特性通常用于分页

跳过三条记录并取之后的三条记录

db.users.find().skip(3).limit(3)

查询内嵌文档

比如要查询这么一条记录:

{ “books”:{“bookid”:100, “bookname”:”english”} }



db.users.find({“books.bookid”:100});

使用正则表达式

使用正则表达式也是mongodb非常强大的特性

比如我们使用正则表达式对name进行过滤

db.users.find({“name”:/^[fc]{1}/})

$where

可以使用javascript代码进行查询,这使得查询几乎能做任何事情



db.users.find({$where:function() {

         //this指遍历到的当前的document

         //根据return true or false来判断此document是否满足find的条件

         if(this.name == “zhangsan”) {

                   return true;

         }

         for(var prop in this) {

                   if(this[prop] == “123”) {

                            return true;

                   }

}

return false;

}});
分享到:
评论

相关推荐

    NoSQL之MongoDB查询

    MongoDB之查询 MongoDB是一种基于NoSQL的数据库,查询操作是数据库的核心操作。MongoDB对查询的支持非常到位,包含有关系运算、逻辑运算、数组运算、正则运算等等。 ### find简介 在MongoDB中,find函数是查询的...

    nosql之MOngoDB,java测试类,涵盖常用方法

    这个Java测试类涵盖了MongoDB与Java集成的基础知识,包括连接数据库、操作集合、插入、查询、更新和删除文档,以及一些高级查询技巧。通过这些方法,你可以有效地在Java应用中使用MongoDB进行数据管理。

    NoSQL Manager for MongoDB

    2. **表格显示**:为了方便数据的查看和分析,"NoSQL Manager for MongoDB"可以将结果集以表格的形式呈现,类似于电子表格。用户可以自定义列显示,排序,甚至进行简单的计算和统计,这对于数据分析工作非常有帮助。...

    NoSQL Manager for MongoDB 4.8.2下载

    标签"NoSQL Manager for MongoDB pro"表明这是一个专业版的工具,通常会提供更高级的功能,如更深入的数据分析、性能优化工具、备份和恢复选项,以及可能的多用户协作支持等。 在压缩包子文件的文件名称列表中,...

    NoSQL Manager for MongoDB.rar

    11. **命令行工具集成**:尽管提供了图形界面,但NoSQL Manager也允许用户直接执行MongoDB shell命令,满足高级用户的需求。 通过使用NoSQL Manager for MongoDB,无论是开发人员还是DBA,都能更加高效地进行...

    NoSQL Manager for MongoDB 3.8.2.4 管理工具

    MongoDB是一种流行的开源、分布式文档数据库,属于NoSQL数据库家族,以其灵活性、可扩展性和高性能而受到广泛应用。NoSQL Manager for MongoDB是一款专为MongoDB设计的强大管理工具,它提供了直观的用户界面,使得...

    MongoDB高级查询用法大全

    MongoDB 作为一个 NoSQL 数据库,提供了多种高级查询方式,以下是 MongoDB 高级查询用法大全: 一、比较运算符 在 MongoDB 中,比较运算符用于比较字段的值,常用的比较运算符有: * $gt:大于 * $lt:小于 * $...

    NoSQLBooster for MongoDB

    【标题】"NoSQLBooster for MongoDB" 是一款专为MongoDB数据库设计的高效管理工具,尤其适用于Mac操作系统。这款应用提供了丰富的功能,旨在优化MongoDB的管理和开发流程。 【描述】"Mac NoSQLBooster for MongoDB...

    主流NOSQL数据库之MongoDB快速入门.docx

    - **定义**:MongoDB是一款基于分布式文件存储的非关系型数据库(NoSQL),由C++语言开发,设计初衷是为了满足Web应用程序对高性能及可扩展性的需求。 - **特性**:具备高度的灵活性、易于水平扩展、丰富的查询语言...

    Win32安装mongodb(NoSQL)说明

    MongoDB是一种流行的开源、分布式、高性能的文档型数据库,它属于NoSQL数据库家族,特别适合处理海量数据和高并发场景。在Windows 32位系统(如Win32 XP)上安装MongoDB需要遵循一系列步骤,下面将详细介绍这个过程...

    Linux运维-03-NoSQL数据库之MongoDB-01文档.zip

    本资料包"Linux运维-03-NoSQL数据库之MongoDB-01文档.zip"将带你深入理解MongoDB的基础知识和关键特性。 首先,MongoDB采用的是文档型数据库模型,它存储数据的形式是JSON(JavaScript Object Notation)文档,这种...

    掌握MongoDB:NoSQL数据库基础与高级特性教程.rar

    高级查询 索引与性能优化 创建索引 索引类型 索引优化 聚合操作 聚合框架 常用聚合操作 数据库管理 备份与恢复 用户管理与权限控制 分片与复制 复制集 分片 实战案例 使用 MongoDB 实现简单的博客系统 目录 什么是 ...

    NoSql MongoDB权威指南.zip

    2. 分布式架构:MongoDB支持多节点集群,可以实现数据复制和分片,以提供高可用性和水平扩展能力。 3. 动态查询:MongoDB支持丰富的查询语法,包括字段选择、比较操作、正则表达式匹配、范围查询等,使得数据检索...

    NoSQL Redis and MongoDB - Matteo Nardelli

    - **高级查询**:MongoDB 提供了丰富的查询语言,支持复杂的查询操作,包括聚合管道、索引、分片等高级功能,这大大增强了其作为数据处理平台的能力。 #### 高级接口、数据处理、数据存储与资源管理 - **高级接口*...

    nosql资料库mongodb的使用

    MongoDB 是一种流行的 NoSQL 数据库,以其灵活性、可扩展性和高性能而被广泛采用。NoSQL 数据库与传统的 SQL 数据库不同,它们不使用固定的表结构,而是采用键值对、文档、列族或图形数据模型。MongoDB 专注于文档型...

    前端 Vue+Node+MongoDB高级全栈开发

    在本篇内容中,我们将深入探讨“前端 Vue+Node+MongoDB 高级全栈开发”的核心知识点。通过本文的学习,您将能够更好地理解如何利用这些技术构建高效、灵活且可扩展的应用程序。 ### 一、Vue.js简介 **Vue.js** 是...

    nosqlbooster4mongo-6.2.10,MongoDB连接工具

    NosqlBooster4mongo还提供了一些高级特性,如备份和恢复功能,允许用户快速备份和恢复MongoDB数据,确保数据安全。另外,它支持SSH隧道,确保数据传输过程中的安全性,尤其对于远程数据库连接至关重要。 在安全方面...

    MongoDB存储过程:探索NoSQL数据库的高级编程

    MongoDB是一个基于文档的NoSQL数据库,由C++语言编写,旨在为大量分布式数据提供高性能、高可用性和高灵活性的数据存储解决方案。MongoDB的主要特点包括: 1. **文档导向**:MongoDB存储BSON(二进制JSON)格式的...

Global site tag (gtag.js) - Google Analytics