码迷,mamicode.com
首页 > 数据库 > 详细

mongodb详解

时间:2018-12-10 23:01:24      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:参数   ice   end   match   过滤   增删改   优缺点   存储   默认   

一.Nosql数据库的优缺点

优点:

简单的扩展

快速的读写

灵活的数据模型

缺点:

不提供对sql的支持

支持的特性不够丰富

产品不够成熟

 

二.mongodb的特性:面向文档存储的数据库,文档结构为bson

高性能,易部署,易使用,存储方便(BSON格式:二进制的json),高性能二进制存储(包括视频)

 

三.增删改查

mongodb结构:数据库,集合(表),json(数据),默认id自增(‘_id’)

 

插入:

insert:db.c1.insert({‘_id‘:1,name:‘cyh‘});

save: db.c1.save({‘_id:1,name:‘ss‘‘});

区别:默认id自增,但是如果插入id相同则insert会报错(主键冲突),save则会做更新操作。

 

 

删除:

db.c1.remove();                          --删除所有

db.c1.remove({name:‘user1‘})    --删除user1的数据

 

查找:

db.c1.find()                                            --查找所有

db.c1.find({name:‘user1‘})                     --查找user1的数据

db.c1.find({age:24},{age:1})                  --只返回c1表中age这一列(find中的第二个参数就是为了指明返回哪一列,为1代表返回某一列。不指定默认返回所有*)

db.c1.find({age:24},{age:1,_id:0})         --只返回c1表中age这一列(find中的第二个参数就是为了指明返回哪一列,为0代表不返回某一列)

条件表达式查找:

db.c1.find ( {‘ age ‘ : { $gt :5 } } )           -- 年龄大于5的数据:{$gt : value}

db.c1.find( {‘age‘ : { $lt : 5} } )               -- 年龄小于5的数据 :{$lt : value}

db.c1.find( { ‘age‘:{$gte: 5} } )       -- 年龄大于等于5 $gte

db.c1.find( { ‘age‘:{$lte: 5} } )        -- 年龄小于等于5 $gte

db.c1.find( { ‘age‘ : { $ne: 5 } } )           -- 年龄不等于5 $ne(not equal)

 

 

查找数据数量:

db.c1.count() = db.c1.find().count()

db.c1.sort({age:1}).skip(2).limit(3).count(1)          --count(1)才能正常的过滤前面的参数,默认为0、

 

排序:

db.c1.sort({age:1});                             -- age进行升序

db.c1.sort({age:-1});                            -- age进行降序

 

限制:

db.c1.limit(4)                                       -- 从0开始查找四个

db.c1.skip(1).limit(4)                           -- 跳过第一个往后找四个

db.c1.sort({age:1}).skip(2).limit(3)      -- 有排序先排序再找结果集,不然数据可能有误差 

 

数组包含:$all  ,类似php 的in_array

db.c1.find({post_arr:{$all:[1,2,3]}})      -- 判断post数组中是否包含123

 

字段是否存在:$exists

db.c1.find({name:{$exists:1}})           -- 判断这个字段是否存在

 

取余: $mod

db.c1.find({age:{$mod:[2,1]}})           -- 查询年龄除2余1的

 

类似mysql的in和not in: $in ,$nin

db.c1.find({‘age‘:{$in:[1,3,5]}})              -- 查询年龄等于1 3 5 的年龄数据

db.c1.find({‘age‘ :{$nin:[1,3,5]}})           -- 查询年龄不等于1 3 5 的年龄数据

 

或连接:$or,$nor

db.c1.find({$or:{name:‘user1‘,age:‘30‘,sex:‘man‘}})                -- 查找名字为user1或年龄为30或性别为男的数据

db.c1.find({$nor:{name:‘user1‘,age:‘30‘,sex:‘man‘}})             -- 不查找名字为user1或年龄为30或性别为男的数据

 

正则表达式:

db.c1.find({name:/user/i})                                                      -- 查找名称包含user的

 

类似mysql中的distinct:

db.c1.distinct(‘name‘);

 

匹配数组中的数组元素 : $elemMatch         x.a, x.b

 

查找null:

db.c1.find({‘name‘:{$exsts:1,$in:[null]}});                    -- 查找值为null的就得先去校验是否存在

db.c1.find(‘name‘:{$type:10})                                     -- type = 10代表 null

 

查询前后多少条:slice

db.post.find({},{comment:{$slice:5}})                                -- 查找前5评论

db.post.find({},{comment:{$slice:-5}})                               -- 查找后5条评论

db.post.find({},{comment:[20,10]})                                    -- skip 20,limit 10

db.post.find({},{comment:[-20,10]})                                    --20 from end,limit 10

 

mongodb详解

标签:参数   ice   end   match   过滤   增删改   优缺点   存储   默认   

原文地址:https://www.cnblogs.com/-cyh/p/10099697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!