Mongodb中如何做query查询,SQL语句是什么

Admin 2022-11-22 群英技术资讯 398 次浏览

今天这篇我们来学习和了解“Mongodb中如何做query查询,SQL语句是什么”,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解“Mongodb中如何做query查询,SQL语句是什么”有一定的帮助。有这方面学习需要的朋友就继续往下看吧!




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

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

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

 

代码如下:
db.users.find({'last_name': 'Smith'})

 

这里,我们将会查询出所有“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 } );

 

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

三、查询条件

1)  , >=

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

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]}});

3)  $exists

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

> for(var i=0;i 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);   

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 } 

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 }

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 }

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 } 

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 } 

以上就是关于“Mongodb中如何做query查询,SQL语句是什么”的介绍了,感谢各位的阅读,希望这篇文章能帮助大家解决问题。如果想要了解更多知识,欢迎关注群英网络,小编每天都会为大家更新不同的知识。 群英智防CDN,智能加速解决方案
标签: query查询

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服