来自:mjsws > 馆藏分类
配色: 字号:
MongoDB数据库文档CRUD操作教程
2018-07-01 | 阅:  转:  |  分享 
  
MongoDB数据库文档CRUD操作教程MongoDB文档CRUD操作查询文档基本使用mongodb查询文档的语法如下:??1db.
collection_name.find(query,projection)?????#以压缩格式返回数据?1db
.collection_name.find(query,projection).pretty()?#以易读格式返回数据que
ry:可选,使用查询操作符指定查询条件;projection:可选,使用投影操作符指定返回的键,如果需要返回文档中所有的键,只需要
省略该参数;??1#查询testdb.artciles集合中的所有文档?1>usetestdb?1>db.articl
es.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小于等于(<=);{?find({score:{$lte:120}})查询score<=120的文档$gte大于等于(>=);{?:{$gt
e:}}db.col.find({score:{$gte:120}})查询score>=120的文档逻辑关系查询符
$and?and和关系;{$and:[query1,query2]}{query1,query2}db.col.fi
nd({$and:[{city:''guangzhou''},{score:{$gt:250}}]})db.col.fin
d({city:''guangzhou'',?score:{$gt:250}}?查询city=''guangzhou''and
core>250的文档?$oror或关系;{$or:[query1,query2]}db.col.find({$o
r:[{city:''guangzhou''},{score:{$gt:250}}]})查询city=''guangzhou''
orcore>250的文档?$nornor异或关系;{$nor:[query1,query2]}db.col.fin
d({$nor:[{city:''guangzhou''},{score:{$gt:250}}]})查询(city=''g
uangzhou''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:[''jav
a'',''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}})查询tag
es字段数组长度为3的文档,可以结合比较查询符使用$type查询指定类型的key,具体类型列表见:https://docs
.mongodb.com/manual/reference/operator/query/type/index.html{?:{$
type:typecode}}db.col.find({title:{$type:2}})查询title类型为
String的文档$exits查询指定存在条件的key的文档{?:{$exists:}}db.col.find({sc
hool:{$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}}其中$option
s用于修饰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使用任意?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)}})查询c
ol中所有score>salary的文档;??1>usetestdb?1#查询testdb.articles集
合中author="assad"的文档?1>db.articles.find({author:''assad''})?1
??1#查询likes>1000的文档天地棋牌http://www.dadiqipaigw.cn?1>db.ar
ticles.find({likes:{$gt:1000}})?1??1#查询likes大于1000,小于15
00的文档?1>db.artciles.find({likes:{$gt:1000,$lt:1500}})?1??1
#查询author="assad"同时likes>2000的文档?1>db.articles.find({au
thor:''assad'',likes:{$gt:2000}})?1??1#查询authoer="assad"或"va
ncy"的文档?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("5a83c281a04c12209d7
9eea3"),"title":"groovyrefrence","author":"assad"}?1{"_id"
:ObjectId("5a83c5a0a04c12209d79eea4"),"title":"springrefrenc
e","author":"alex"}?1??1#同上,不返回_id键?1>db.articles.find({}
,{title:1,author:1,_id:0})?1{"title":"groovyrefrence","a
uthor":"assad"}?1{"title":"springrefrence","author":"al
ex"}$slice操作符使用$slice操作符可以限定返回的文档的个数;??1#返回前20个文档?1>db.ar
ticles.find({},{_id:{$slice:20}})?1#返回包含有titles的前20个文档?1>
db.articles.find({},{titles:{$slice:20}})?1??1#返回包含有title
s从第20项之后的10项;?1>db.articles.find({},{titles:{$slice:[20
,10]}})?1#返回包含有titles从倒数第20项之后的10项;?1>db.articles.fin
d({},{titles:{$slice:[-20,10]}})skip(),limit()方法以上使用$sl
ice操作符限制显示结果数量,可以使用skip(),limit()函数来代替;??1#返回前20个文档?1>db.art
icles.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?查询内嵌文档mo
ngo对于内嵌文档的查询和数组的操作方式是一样的,如以下文档:??1{?1??_id:ObjectId("51d7b0d4
36332e1a5f7299d6"),?1??"name":{?1????"first":"Van",?1??
??"last":"Darkholme"?1??},?1??"comments":"DeepDarkFans
tatic"?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:{fir
st:"Van",last:{$regex:"Dark"}}})?查询分组与数据聚合mongodb如果实现类似SQL
查询中的group子句、count()、avg()等统计聚合方法,可以使用聚合方法aggregate()详见:06.
MongoDB数据聚合操作插入文档mongodb使用insert()方法插入文档,语法如下:??1db.collectio
n_name.insert(document)示例:??1#在testdb库中的articles集合中插入一条记录?1>
usetestdb?1>db.articles.insert({?1...title:''groovyrefrence'',
?1...author:''assad'',?1...tages:[''groovy'',''java''],?1...like:233
3?1...})插入日期类型可以使用newDate()来创建一个日期类型的值,使用示例如下:??1#插入当前时间值?1>
db.logdate.insert({ip:''255.33.21.36'',logDate:newDate()})?
?1.....?1#插入指定时间值?1>db.logdate.insert({ip:''255.33.21.36'',log
Date:ISODate(''2018-02-1215:33:00'')})?#指定时间更新文档update()方法upd
ate()方法用于更新已经存在的文档,语法如下:??1db.collection_name.update(,<
update>,{upset:,muti:,writeConcern:>})
捕鱼游戏http:/
/www.44771.netquery:update的查询条件,详细语法同查询的query参数(可以理解为sqlupda
te的where子句);update:更新的对象和一些更新的操作符,比如$set操作符(可以理解为sqlupdate
的set子句);upset:可选,指明如果不存在update的记录时,是否插入新的文档对象,默认为false不插入;
muti:可选,true表示更新全部查找到的文档,false表示只更查找到的第一条文档,默认为false;writeCons
ern:可选,指明抛出异常的级别;其中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#将auth
or=''assad''的文档的title设置为''花Q!''?1>db.articles.update({name:''ass
ad''},{$set:{title:''花Q!''}})?1??1#将score>=2500的文档score-10
0,level+5?1>db.users.update({score:{$gte:250}},{$inc:{score
:-100,level:5}})save()方法save()方法使用传入的文档替换掉已有的文档,语法如下:??1db.co
llection.save(,{writeConcern:})nt>棋牌评测网http://www.77884.net如下示例:??1>db.article.save
({?1??"_id":ObjectId("56064f89ade2f21f36b03136"),?1??"title"
:"MongoDb",?1??"author":"assad",?1??"tags":[?1??????"mongodb",?1??????"nosql"?1??],?1??"likes":110?1?删除文档mongodb使用remove()方法删除文档,语法如下:??1db.collection.remove(,{justOne:,writeConcern:)query:(可选)删除的文档的条件;justOne:(可选)如果设为true或1,则只删除一个文档'';writeConcern:(可选)抛出异常的级别;示例:??1#删除article集合中所有author="assad"的文档?1>db.artciles.remove({author:''assad''},{justOne:false})?1??1#删除artciles集合中的所有文档?1>db.articles.remove({},{justOne:false})
献花(0)
+1
(本文系mjsws首藏)