MongoDB数据库文档CRUD操作教程_第1页
MongoDB数据库文档CRUD操作教程_第2页
MongoDB数据库文档CRUD操作教程_第3页
MongoDB数据库文档CRUD操作教程_第4页
MongoDB数据库文档CRUD操作教程_第5页
已阅读5页,还剩6页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MongoDB数据库文档CRUD操作教程MongoDB文档CRUD操作查询文档基本使用mongodb查询文档的语法如下:??1db.collection_name.find(query,projection)?????#以压缩格式返回数据?1db.collection_name.find(query,projection).pretty()?#以易读格式返回数据query:可选,使用查询操作符指定查询条件;

projection:可选,使用投影操作符指定返回的键,如果需要返回文档中所有的键,只需要省略该参数;??1#查询testdb.artciles集合中的所有文档?1>usetestdb?1>db.articles.find().pretty()???1??1#查询testdb.articles集合中author='assad'的文档?1>db.atricles.find({author:'assad'})query条件操作符操作符含义和语法示例比较查询符:等于(=);

{

:

}db.col.find({name:'assad'?})

查询name='assad'的文档$ne不等于(!=);

{

:{$ne:}}db.col.find({name:{$ne:'assad'}})

查询name!='assad'的文档$lt小于(<):

{

:{$lt:}}db.col.find({score:{$lt:120}})

查询score>120的文档$gt大于(>);

{

:{$gt:}}db.col.find({score:{$gt:120}})

查询score<120的文档$lte小于等于(<=);

{

<key:{$lte:}}db.col.find({score:{$lte:120}})

查询score<=120的文档$gte大于等于(>=);

{

:{$gte:}}db.col.find({score:{$gte:120}})

查询score>=120的文档逻辑关系查询符$and?and和关系;

{$and:[query1,query2]}

{query1,query2}db.col.find({$and:[{city:'guangzhou'},{score:{$gt:250}}]})

db.col.find({city:'guangzhou',?score:{$gt:250}}?

查询city='guangzhou'andcore>250的文档?$oror或关系;

{$or:[query1,query2]}db.col.find({$or:[{city:'guangzhou'},{score:{$gt:250}}]})

查询city='guangzhou'orcore>250的文档?$nornor异或关系;

{$nor:[query1,query2]}db.col.find({$nor:[{city:'guangzhou'},{score:{$gt:250}}]})

查询(city='guangzhou'orcore<=250)and(city!='guangzhou'andcore>250)的文档?$not非关系;

{$not:{query}}db.col.find({$not:{city:'guangzhou'}})

查询city!='guanhgzhou'的文档成员关系查询符$all查询key匹配指定数组中的所有成员的结果;

{

:{$all:[array]}}db.col.find({tages:{$all:['java','cpp','linux']}})

查询tages字段数组中含有'java','cpp','linux'全部这些值的文档$in?查询key匹配指定数组中任一个成员的结果;

{

:{$in:[array]}}db.col.find({tages:{$in:['java','cpp','linux']}})

查询tages字段数组中含有'java','cpp','linux'中任意一个值的文档$nin查询key不匹配指定数组中任一个成员的结果;

{

:{$in:[array]}}db.col.find({tages:{$in:['java','cpp','linux']}})

查询tages字段数组中不含有'java','cpp','linux'的文档.查询key指定下标成员,index从0开始;

{

:query}db.col.find({tages.1:‘java’})

查询tages字段数组第2个元素=‘java'的文档值属性查询符$size查询指定长度的数组

{

:{$size:value}}db.col.find({tages:{$size:3}})

查询tages字段数组长度为3的文档,可以结合比较查询符使用$type查询指定类型的key,具体类型列表见:

/manual

/reference/operator/query/type/index.html

{

:{$type:typecode}}db.col.find({title:{$type:2}})

查询title类型为String的文档$exits查询指定存在条件的key的文档

{

:{$exists:}}db.col.find({school:{$exits:false}})

查询不存在school字段的所有文档null其实不是操作符,是作为空值的占位符

{

:null}

{:{$in:[null]}}db.col.find({school:null})

查询school字段不存在,或者school字段值为空的文档

db.col.find({school:{$in:[null],$exists:true}})

查询school字段存在,但是值为空的文档$regex对字符串进行正则匹配,使用perl兼容表达式,可以用达到类似SQLlike子句的效果;

{

:{$regex:pattern,$options:ops}}

其中$options用于修饰regex,参数如下:

-i:忽略大小写;

-x:强制对没有标注\n的字符串分行;

-s:pattern中的点号匹配所有字符(包括换行符);

-x:忽略pattern中没有转义的特殊字符;db.col.find({name:{$regix:"^a*"}})

db.col.find({name:/^a*/}})

查询name以a开头的文档

db.col.find({name:{$regex:"^a*",$options:'i'}})

db.col.find({name:/^a*/i})

查询name以a开头的文档,或略大小写$where使用任意

\t"/database/201802/_blank"JavaScript作为查询的一部分,包括Js表达式和Js闭包;

{$where:javascript-operation}

在Js表达式中,使用this,obj指代每个文档对象db.col.find({$where:"this.score>this.salary"})

db.col.find({$where:"obj.score=this.salary"})

db.col.find({$where:function(){return(this.score>this.salary)}})

查询col中所有score>salary的文档;

??1>usetestdb?1#查询testdb.articles集合中author="assad"的文档?1>db.articles.find({author:'assad'})?1??1#查询likes>1000的文档天地棋牌?1>db.articles.find({likes:{$gt:1000}})?1??1#查询likes大于1000,小于1500的文档?1>db.artciles.find({likes:{$gt:1000,$lt:1500}})?1??1#查询author="assad"同时likes>2000的文档?1>db.articles.find({author:'assad',likes:{$gt:2000}})?1??1#查询authoer="assad"或"vancy"的文档?1>db.articles.find({author:{$in:['assad','vancy']}})?1??1#查询tages数组同时含有'java','groovy'的文档?1>db.articles.find({tages:{$all:['java','groovy']}})?1??1#查询title中含有'java'字段查询返回结果处理使用find()函数的projection参数限定返回键??1#查询testdb.article集合中所有的文档,只返回title,author,这2个键(默认会返回_id键)?1>db.articles.find({},{title:1,author:1})?1{"_id":ObjectId("5a83c281a04c12209d79eea3"),"title":"groovyrefrence","author":"assad"}?1{"_id":ObjectId("5a83c5a0a04c12209d79eea4"),"title":"springrefrence","author":"alex"}?1??1#同上,不返回_id键?1>db.articles.find({},{title:1,author:1,_id:0})?1{"title":"groovyrefrence","author":"assad"}?1{"title":"springrefrence","author":"alex"}$slice操作符使用$slice操作符可以限定返回的文档的个数;??1#返回前20个文档?1>db.articles.find({},{_id:{$slice:20}})?1#返回包含有titles的前20个文档?1>db.articles.find({},{titles:{$slice:20}})?1??1#返回包含有titles从第20项之后的10项;?1>db.articles.find({},{titles:{$slice:[20,10]}})?1#返回包含有titles从倒数第20项之后的10项;?1>db.articles.find({},{titles:{$slice:[-20,10]}})skip(),limit()方法

以上使用$slice操作符限制显示结果数量,可以使用skip(),limit()函数来代替;??1#返回前20个文档?1>db.articles.find().limit(20)?1#返回从第20项之后的10项;?1>db.articles.find().skip(20).limit(10)sort()方法

sort()方法用于对查询结果进行排序,方法原型如下,其中key为按该键进行排序,1表示正序,-1表示倒叙:

db.colletion_name.find().sort({:<1|-1>})??1#返回结果按likes正序排序?1>db.artciles.find().sort(likes:1)?1?查询内嵌文档mongo对于内嵌文档的查询和数组的操作方式是一样的,如以下文档:??1{?1?

_id:ObjectId("51d7b0d436332e1a5f7299d6"),?1??"name":{?1????"first":"Van",?1????"last":"Darkholme"?1??},?1??"comments":"DeepDarkFanstatic"?1}其中"name"的值为一个内嵌文档??1#查询name.first="Van"的文档?1>db.nobodyknown.find({name:{first:"Van"}});?1#查询name.first="Van",name.last包含"Dark"的文档?1>db.nobodyknown.find({name:{first:"Van",last:{$regex:"*Dark*"}}})

查询分组与数据聚合mongodb如果实现类似SQL查询中的group子句、count()、avg()等统计聚合方法,可以使用聚合方法aggregate()详见:06.MongoDB数据聚合操作

插入文档mongodb使用insert()方法插入文档,语法如下:??1db.collection_name.insert(document)示例:

??1#在testdb库中的articles集合中插入一条记录?1>usetestdb?1>

db.articles.insert({?1...title:'groovyrefrence',?1...author:'assad',?1...tages:['groovy','java'],?1...like:2333?1...})插入日期类型可以使用newDate()来创建一个日期类型的值,使用示例如下:??1#插入当前时间值?1>

db.logdate.insert({ip:'6',logDate:newDate()})??1.....?1#插入指定时间值?1>

db.logdate.insert({ip:'6',logDate:ISODate('2018-02-1215:33:00')})?#指定时间更新文档update()方法update()方法用于更新已经存在的文档,语法如下:

??1db.collection_name.update(<query>,<update>,{upset:<boolean>,muti:<boolean>,writeConcern:<document>})</document></boolean></boolean></update></query>捕鱼游戏query:update的查询条件,详细语法同查询的query参数(可以理解为sqlupdate的where子句);

update:更新的对象和一些更新的操作符,比如$set操作符(可以理解为sqlupdate的set子句);upset:可选,指明如果不存在update的记录时,是否插入新的文档对象,默认为false不插入;

muti:可选,true表示更新全部查找到的文档,false表示只更查找到的第一条文档,默认为false;

writeConsern:可选,指明抛出异常的级别;其中update中常用操作符如下:操作符含义和语法示例$set将某个键的值设置为其他值

{$set:{:,

:,...}}db.col.update({name:'assad'},{$set:{name:'assad2'}})

将name='assad'的文档的name更新为'assad2'$inc对某个键的值进行自增操作(使用负数表示自减)

{$inc:{:,

:,...}}db.col.update({name:'assad'},{$inc:{score:10}})

将name='assad'的文档的score+10示例:??1>usetestdb?1#将author='assad'的文档的title设置为'花Q!'?1>db.articles.update({name:'assad'},{$set:{title:'花Q!'}})?1??1#将score>=2500的文档score-100,level+5?1>db.users.update({score:{$gte:250}},{$inc:{score:-100,level:5}})save()方法save()方法使用传入的文档替换掉已有的文档,语法如下:??1db.collection.save(<document>,{writeConcern:<document>})</document></document>棋牌评测网如下示例:??1>

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论