• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MongoDB > 浅谈mongodb中query查询

浅谈mongodb中query查询

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mongodb driver query,mongodb query,java mongodb query,spring mongodb query,mongodb多条件查询等相关知识,希望本文的分享对您有所帮助

Mongodb最大的功能之一就是它支持动态查询,就跟传统的关系型数据库查询一样,但是它的查询来的更灵活。

一、  Query Expression Objects:查询表达式对象

查询表达式文档也是一个BSON结构的文档,例如,我们可以用下面的查询语句来查询集合中的所有记录:
db.users.find({})
这里,表达式对象是一个空文档,在查询的时候去去匹配所有的记录。再看:

db.users.find({'last_name': 'Smith'})
</div>

这里,我们将会查询出所有“last_name”属性值为“Smith”的文档记录。

二、查询选项

除了查询表达式意外,Mongodb还支持一些额外的参数选项。例如,我们可能仅仅只想返回某些特定的字段值:

//返回除了age字段外的所有字段
> db.user.find({},{age:0});
//返回tags=tennis 除了comments的所有列
db.posts.find( { tags : 'tennis' }, { comments : 0 } );
//返回userid=16的name字段
> db.user.find({userid:16},{name:1});
{ "_id" : 16, "name" : "user16" }
//返回x=john的所有z字段
db.things.find( { x : "john" }, { z : 1 } );
</div>

注:  _id字段始终都会被返回,哪怕没有明确指定

三、查询条件

1)  <, <=, >, >=

// 大于: field > value 
db.collection.find({ "field" : { $gt: value } } );  
 
//小于:field < value 
db.collection.find({ "field" : { $lt: value } } );
  
//大于等于: field >= value 
db.collection.find({ "field" : { $gte: value } } ); 
 
//小于等于:field<=value 
db.collection.find({ "field" : { $lte: value } } ); 
 
</div>

2)  $all

  $all操作类似$in操作,但是不同的是,$all操作要求数组里面的值全部被包含在返回的记录里面,如:

> use test; 
switched to db test 

> db.things.insert({a:[1,2,3]}); 

> db.things.find();             
{ "_id" : ObjectId("4de73360059e7f4bdf907cfe"), "a" : [ 1, 2, 3 ] } 

> db.things.find({a:{$all:[2,3]}}); 
{ "_id" : ObjectId("4de73360059e7f4bdf907cfe"), "a" : [ 1, 2, 3 ] } 

> db.things.find({a:{$all:[1,2,3]}}); 
{ "_id" : ObjectId("4de73360059e7f4bdf907cfe"), "a" : [ 1, 2, 3 ] } 

> db.things.find({a:{$all:[1]}});    
{ "_id" : ObjectId("4de73360059e7f4bdf907cfe"), "a" : [ 1, 2, 3 ] } 

> db.things.find({a:{$all:[1,2,3,4]}});

</div>

3)  $exists

$exists操作检查一个字段是否存在,如:

> for(var i=0;i<1000;i++) db.user.save({_id:i,name:'user'+i,userid:i,age:20}); 
 
//包含userid 
> db.user.find({userid:{$exists:true}}).limit(5); 
{ "_id" : 0, "name" : "user0", "userid" : 0, "age" : 20 } 
{ "_id" : 1, "name" : "user1", "userid" : 1, "age" : 20 } 
{ "_id" : 2, "name" : "user2", "userid" : 2, "age" : 20 } 
{ "_id" : 3, "name" : "user3", "userid" : 3, "age" : 20 } 
{ "_id" : 4, "name" : "user4", "userid" : 4, "age" : 20 } 

//不包含sex字段 
> db.user.find({sex:{$exists:false}}).limit(5);   
</div>

4)  $mod

$mod操作可以让我们简单的进行取模操作,而不需要用到where子句,如:

//where子句 
> db.user.find("this._id%10==1").limit(5); 
{ "_id" : 1, "name" : "user1", "userid" : 1, "age" : 20 } 
{ "_id" : 11, "name" : "user11", "userid" : 11, "age" : 20 } 
{ "_id" : 21, "name" : "user21", "userid" : 21, "age" : 20 } 
{ "_id" : 31, "name" : "user31", "userid" : 31, "age" : 20 } 
{ "_id" : 41, "name" : "user41", "userid" : 41, "age" : 20 } 

//$mod操作 
> db.user.find({_id:{$mod:[10,1]}}).limit(5); 
{ "_id" : 1, "name" : "user1", "userid" : 1, "age" : 20 } 
{ "_id" : 11, "name" : "user11", "userid" : 11, "age" : 20 } 
{ "_id" : 21, "name" : "user21", "userid" : 21, "age" : 20 } 
{ "_id" : 31, "name" : "user31", "userid" : 31, "age" : 20 } 
{ "_id" : 41, "name" : "user41", "userid" : 41, "age" : 20 } 

</div>

5)  $ne

$ne意思是not equal,不等于,不用多说,看例子:

> db.user.find().limit(5); 
{ "_id" : 0, "name" : "user0", "userid" : 0, "age" : 20 } 
{ "_id" : 1, "name" : "user1", "userid" : 1, "age" : 20 } 
{ "_id" : 2, "name" : "user2", "userid" : 2, "age" : 20 } 
{ "_id" : 3, "name" : "user3", "userid" : 3, "age" : 20 } 
{ "_id" : 4, "name" : "user4", "userid" : 4, "age" : 20 } 

> db.user.find({_id:{$ne:0}}).limit(5); 
{ "_id" : 1, "name" : "user1", "userid" : 1, "age" : 20 } 
{ "_id" : 2, "name" : "user2", "userid" : 2, "age" : 20 } 
{ "_id" : 3, "name" : "user3", "userid" : 3, "age" : 20 } 
{ "_id" : 4, "name" : "user4", "userid" : 4, "age" : 20 } 
{ "_id" : 5, "name" : "user5", "userid" : 5, "age" : 20 }

</div>

6)  $in

$in操作类似于传统关系数据库中的IN,看例子:

//数据库中有所有数组对应的记录 
> db.user.find({_id:{$in:[2,3,4,5,6]}}).limit(5); 
{ "_id" : 2, "name" : "user2", "userid" : 2, "age" : 20 } 
{ "_id" : 3, "name" : "user3", "userid" : 3, "age" : 20 } 
{ "_id" : 4, "name" : "user4", "userid" : 4, "age" : 20 } 
{ "_id" : 5, "name" : "user5", "userid" : 5, "age" : 20 } 
{ "_id" : 6, "name" : "user6", "userid" : 6, "age" : 20 } 

//因为数据库中没有_id=1111的记录 
> db.user.find({_id:{$in:[2,3,4,5,1111]}}).limit(5); 
{ "_id" : 2, "name" : "user2", "userid" : 2, "age" : 20 } 
{ "_id" : 3, "name" : "user3", "userid" : 3, "age" : 20 } 
{ "_id" : 4, "name" : "user4", "userid" : 4, "age" : 20 } 
{ "_id" : 5, "name" : "user5", "userid" : 5, "age" : 20 }
</div>

7)  $nin

$nin跟$in操作相反,看例子:

//扣掉_id=1/2/3/4的记录 
> db.user.find({_id:{$nin:[1,2,3,4]}}).limit(5);     
{ "_id" : 0, "name" : "user0", "userid" : 0, "age" : 20 } 
{ "_id" : 5, "name" : "user5", "userid" : 5, "age" : 20 } 
{ "_id" : 6, "name" : "user6", "userid" : 6, "age" : 20 } 
{ "_id" : 7, "name" : "user7", "userid" : 7, "age" : 20 } 
{ "_id" : 8, "name" : "user8", "userid" : 8, "age" : 20 } 
</div>

8)  $nor、$or

$nor跟$or相反,不好解释,看例子:

> db.user.find({$nor:[{_id:2},{name:'user3'},{userid:4}]}).limit(5);   
{ "_id" : 0, "name" : "user0", "userid" : 0, "age" : 20 } 
{ "_id" : 1, "name" : "user1", "userid" : 1, "age" : 20 } 
{ "_id" : 5, "name" : "user5", "userid" : 5, "age" : 20 } 
{ "_id" : 6, "name" : "user6", "userid" : 6, "age" : 20 } 
{ "_id" : 7, "name" : "user7", "userid" : 7, "age" : 20 }

> db.user.find({$or:[{_id:2},{name:'user3'},{userid:4}]}).limit(5); 
{ "_id" : 2, "name" : "user2", "userid" : 2, "age" : 20 } 
{ "_id" : 3, "name" : "user3", "userid" : 3, "age" : 20 } 
{ "_id" : 4, "name" : "user4", "userid" : 4, "age" : 20 } 
</div>

以上所述就是本文的全部内容了,希望大家能够喜欢。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 浅谈mongodb中query查询

相关文章

  • 2017-05-11MongoDB插入数据的3种方法
  • 2017-05-11Mongodb 启动命令mongod参数说明(中文翻译)
  • 2017-05-11Java操作MongoDB数据库示例分享
  • 2017-05-11深入理解MongoDB分片的管理
  • 2017-05-11CentOS 6.5系统中使用yum安装MongoDB 2.6 教程
  • 2017-05-11PHP库 查询Mongodb中的文档ID的方法
  • 2017-05-11centos6.5中安装mongodb简明总结
  • 2017-05-11MongoDB Windows安装服务方法与注意事项
  • 2017-05-11MongoDB数据库插入、更新和删除操作详解
  • 2017-08-25MongoDB安装为service报错100(windows系统)

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mongodb 查看数据库和表大小
    • MongoDB aggregate 运用篇个人总结
    • mongodb 随机获取一条记录的方法
    • MongoDB入门教程之分片技术详解
    • deepin 15.3 X64系统中安装mongodb的方法步骤
    • 关于NoSQL之MongoDB的一些总结
    • MongoDB快速入门笔记(六)之MongoDB的文档修改操作
    • MongoDB远程访问配置步骤详解
    • 浅谈MongoDB的备份方式
    • PHP MongoDB GridFS 存储文件的方法详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有