`
welcome66
  • 浏览: 402763 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mongodb的各种查询方法

阅读更多
1.查询比较写法:
查询某个字段比指定值小:$lt
//假设存在集合USERdb.USER.find({REGIST_DATE:{$lt:new Date(2013,0,1)}});
/*前面提到过mongo完全遵守JAVASCRIPT语法,在JAVASCRIPT里面,月份是从0开始的,即上面的查询是查询2013-1-1以前注册的的用户。*/
查询某个字段比指定值大:$gt
db.USER.find({REGIST_DATE:{$gt:new Date(2013,0,1)}});
/*$lt表示小于,表示大于的自然就是$gt了*/
大于等于:$gte   小于等于:$lte
db.USER.find({REGIST_DATE:{$gte:new Date(2013,0,1),$lte:new Date(2013,0,31)}});
/*关于这个时间的问题看起来似乎有些别扭哈,没办法啦,MONGO就是这样啦。习惯就好啦。*/
/*上面的一行查询就是针对REGIST_DATE的组合查询形式,表示查询出所有在2013-1-1到2013-1-31注册的用户*/
2.$in---相当于sql的in,它可以利用索引
db.USER.find(NAME:{$in:['tom','jerry']});
/*如果为NAME字段创建了索引,它就会从索引里面查找*/
/*mongo是区分大小写的,所以集合和文档属性的名字必须与创建它们的时候一致。*/
/*也就是NAME和name是两个不同的属性,它们可以同时存在于一个文档内*/
/*在一个集合内如果即存在NAME属性的文档,又存在name属性的文档,那么上面的那条命令不会把name属性查询出来*/
$nin---$in的相反操作,相当于sql的not in
db.USER.find(NAME:{$nin:['tom','jerry']});
注意:$nin不会利用索引,也就是说上面的命令$nin不会使用针对NAME属性的索引。
$all---没有sql类似的特性与之类比了
它的意义在于:查询条件是一个简单值数组,只有返回属性满足数组内的所有值的文档。这种查询条件只有在属性值是一个数组的情况下。
下面要查询同时包含'nosql'和'mongo'这两个标签的博文
db.blog.find(tags:{$all:['nosql','mongo']});
$ne---不等性比较,它接收单值或数组
db.blog.find(tags:{$ne:'nosql'});//返回所有不包含nosql标签的博文
db.blog.find(tags:{$ne:['nosql','mongo']});//返回所有不包含nosql和mongo这两个标签的博文
$size---检查一个数组的尺寸,不利用索引,不能做范围查询,以后可能会增加这方面的支持
有时iteye会给用户快递一些奖品,iteye可能会把用户曾经填过的地址保存下来。可以这么保存
在USER集合里增加一个address属性,没有留过地址的可以没有。
$not---取反值,只有在没有指定相反操作时才需要用到它。因为绝大部分操作符都有对应的相反操作,所以应当尽量使用相反操作符,比如正则表达式匹配没有相反操作
假如有一天,ITEYE只允许用户名以字母开头了就可以把所有不以字母开头的用户查出来给他们发一封邮件,让他们改名。
db.USER.find(accountName:{$not:/^[a-zA-Z]/})
当然$not也接收单值,但是不建议使用
$exists----检查某个属性的存在性。
比如要把所有包含附件的博文查询出来。
db.blog.find({attachment:{$exists:true}});
没有附件的就是db.blog.find({attachment:{$exists:false}});
或才可以这样做:
db.log.find({attachment:null});//不存在
db.blog.find({attachment:{$ne:null}});//存在
$mod-----求余数,不利用索引
假如说某天ITEYE心血来潮要给所有年龄能被4整队的用户快递一份奖品。
db.USER.find({age:{$mod:[4,0]}});//数组的第一个值是除数,第二个值是期望的余数
$type---以属性类型查询
虽然不建议在同一集合的不同文档相同属性名保存着不同类型的数据,但是有时由于程序bug或设计不严谨可能会出现这种情况。现在要把这种情况找出来,比如_ID属性有的是ObjectID类型,有的是整数。下面把所有_ID是字符串的文档找出来。
db.USER.find(_id:{$type:2})
db.USER.find(_id:{$not:{$type:7}});//把所有主键ObjectID类型的文档找出来
$or  $and----逻辑运算
它们的意义就不多解释了。不过它们的用法非常有意思
比如找出所有月收入在20000以上或2000以下的用户
db.USER.find({$or:[{salary:{$gt:20000}},{salary:{$lt:2000}}]});
找出所有月收入在8000以上,20000以下的用户
db.USER.find({$and:[{salary:{$gte:8000}},{salary:{$lte:20000}}]});
$where-----接收一段javascript代码作为查询条件,不利用索引
假如说要查询所有闰年出生的用户  www.2cto.com  
db.USER.find({$where:'var year=birthday.getFullYear();return year%4==0 && year%100>0 || year%400==0';});
分享到:
评论

相关推荐

    Thinkphp使用mongodb数据库实现多条件查询方法

    Thinkphp是一个基于PHP的轻量级框架...这包括了添加或修改查询方法以适应MongoDB的查询语法,以及处理框架内部潜在的bug。这些改动可以帮助Thinkphp在结合MongoDB使用时,为开发者提供更加强大和灵活的数据库查询能力。

    mongoDB-查询语法

    MongoDB 查询语法详解 MongoDB 是一个基于NoSQL的数据库,具有高效、灵活、易扩展等特点。在 MongoDB 中,查询语法是...MongoDB 的查询语法非常灵活和强大,提供了多种查询方式和操作符,可以满足各种复杂的查询需求。

    MongoDB基本查询.pdf

    除此之外,MongoDB 还提供了其他的查询方法和运算符,比如 `sort` 用于排序结果,`limit` 和 `skip` 分别用于限制返回结果的数量和跳过前几条,以及 `$and`, `$or`, `$not` 等逻辑运算符,以实现更复杂的逻辑组合...

    使用aggregate在MongoDB中查询重复数据记录的方法

    在MongoDB中,可以在创建集合时或之后通过`index()`方法为字段设置唯一索引。例如: ```javascript customerSchema.index({ cname: 1, cellPhone: 1, sender: 1, tag: 1, behaviour: 1 }, { unique: true });...

    MongoDB之查询详解

    ### MongoDB查询详解 #### 一、引言 在NoSQL数据库的世界里,MongoDB因其灵活的数据模型、高性能和可扩展性而备受青睐。查询作为数据库操作中最基础也是最重要的功能之一,在MongoDB中同样有着丰富的语法支持。...

    MongoDB查询性能验证及优化

    本文将深入探讨如何验证MongoDB查询性能并进行优化。 首先,我们需要理解MongoDB的查询机制。MongoDB使用查询解释器来解析和执行查询操作。通过`explain()`方法,我们可以获取查询的执行计划,包括扫描的文档数量、...

    MongoDB的查询方法

    MongoDB查询方法 MongoDB是一种NoSQL数据库,提供了多种灵活的查询方法来满足不同的应用场景。本文将详细介绍MongoDB的查询方法,包括基本查询操作和高级查询操作。 基本查询操作 ### 1. 查询所有博客 使用`find...

    1亿条记录的MongoDB数据库随机查询性能测试

    在测试脚本`mselectmongodb.py`中,定义了一个`SqlToMongo`类,包含了执行MongoDB查询的方法`m_sql()`。`gen_load()`函数用于启动每个进程,并调用`m_sql()`执行随机查询。在主程序中,创建了一个包含101个进程的...

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

    一旦有了`MongoDBTemplate`,你就可以开始执行各种数据库操作了。比如,你可以使用`save()`方法保存一个对象到数据库: ```java public void saveUser(User user) { mongoTemplate.save(user, "users"); } ``` ...

    C#,asp.net操作mongodb实例,新增,修改,查询,分页查询,删除,基类封装,打开直接运行

    你可以根据需要添加各种查询条件,如`Find(Builders<T>.Filter.Eq(x => x.Id, id))`。 分页查询:在大型数据集时,分页查询至关重要。`Skip`和`Limit`方法用于实现此功能。例如,`collection.Find(filter).Skip...

    mongodb 查询语法和实例

    以上是MongoDB查询语法的一些核心点,实际应用中还有更多高级特性和复杂查询技巧。了解并熟练运用这些工具,可以极大地提高MongoDB数据管理的效率和精度。通过实践和阅读`query数据语法.txt`中的实例,可以更深入地...

    一种将oracle数据库内的数据导入到mongodb数据库的方法及系统.docx

    3. **数据导入方法**: 方法中提及的"构造化查询语言配置"(SQL配置)用于从Oracle数据库导出数据,SQL是用于管理和处理关系数据库的标准语言。而“bson格式配置”是指数据转换成BSON(Binary JSON)格式,这是...

    MongoDB导出查询结果到文件例子

    在这个环境中,我们可以执行各种数据库操作,包括查询、插入、更新和删除等。 在上述的"MongoDB导出查询结果到文件例子"中,主要涉及到了以下两个关键知识点: 1. **查询操作**:在JavaScript脚本`dump.js`中,...

    mongodb查询性能.rar

    首先,我们要了解MongoDB查询的基本原理。MongoDB使用查询解释器来解析查询语句,并生成执行计划。执行计划决定了数据如何被检索,包括使用的索引、数据读取顺序等。你可以通过`db.collection.explain()`方法来查看...

    java 中mongodb的各种操作查询的实例详解

    在 Java 中使用 MongoDB 时,需要掌握各种操作查询的方法,本文档将详细介绍 Java 中 MongoDB 的各种操作查询的实例详解。 查询一条数据 在实际应用中,我们经常需要查询一条数据,例如根据 URL 查询对应的 ...

    Java操作mongodb的模糊查询和精确查询

    Java操作MongoDB的模糊查询和精确查询是 MongoDB 中常用的查询方式,使用 Java 语言可以通过 MongoDB 的 Java 驱动程序来实现各种查询操作。在本文中,我们将详细介绍 Java 操作 MongoDB 的模糊查询和精确查询,包括...

    MongoDB高级查询.doc

    以下将详细介绍文档中提到的一些高级查询方法: 1. **比较操作符**: - `$gt`(大于): 查询`field`值大于`value`的文档。 - `$lt`(小于): 查询`field`值小于`value`的文档。 - `$gte`(大于等于): 查询`...

    mongoDB DAO层封装

    开发者可以创建自己的Repository接口,继承自Spring Data提供的MongoRepository或SimpleMongoRepository,并声明特定的查询方法。Spring Data会自动实现这些接口,将方法映射到MongoDB的相应操作上。 6. 自定义查询...

    基于c#的Mongodb帮助类源码 含一个分页效率测试

    C#驱动程序(通常称为MongoDB.Driver)是官方提供的,它提供了一系列类和方法来连接MongoDB服务器,执行查询以及管理数据。核心的`IMongoDatabase`接口代表了一个数据库,而`IMongoCollection<T>`接口则代表了特定...

    MongoDB数据查询方法干货篇

    MongoDB 是一种流行的开源文档型数据库,用于存储和...理解并熟练掌握这些查询方法对于高效地操作 MongoDB 数据库至关重要。通过不断的实践和学习,你可以更深入地了解如何利用 MongoDB 的强大功能来满足各种业务需求。

Global site tag (gtag.js) - Google Analytics