MongoDb之强大功能

mongoDb中有很多很强大的功能,例如可以随意的修改其类型,这也是关系型数据库比较难做到的。
常用的命令:
mongod -dbpath “D:\mongodb\db”
–注册服务

mongod -dbpath "D:\mongodb\db" -logpath "D:\mongodb\log\mongodb.log" -install -serviceName "MongoDB"
--启动服务
net start MongoDB;
--查看帮助
db.help();
--创建库
use yc
--查看当前库下的集合
show collections;

对集合的操作:

--创建集合
1.直接向集合中添加数据,如果该集合不存在,则会自动创建 
    db.yc.insert({"_id":1001,"name":"yc"});
    此时使用命令show collections会发现有两个集合:
        system.indexes; 索引集合
        yc; 
2.db.createCollection("navy");  
--删除集合
db.collection_name.drop();
--向集合中添加多条记录
db.collection_name.insert([{"_id":1002,"name":"天天","sex":"男"},{"_id":1003,"name":"当当","sex":"女"}]);
db.yc.insert([{"_id":1002,"name":"scott","sex":"M"},{"_id":1003,"name":"sys","sex":"F"}]);

–查看集合中的数据
db.collection_name.find();

删除记录:

--删除记录(文档)
db.collection_name.remove({条件});
db.collection_name.remove({"_id":    {"$ne":1001}});  //$lt(小于)  $gt(大于)  $lte(小于等于)  $gte(大于等于)

MongoDb支持比较丰富的数据类型:

    null: {"x":null}
    boolean:   {"x":true}
    数值:  {"x":3.14}  {"x":3}  NumberInt("3")  NumberLong("3")
    字符串: {"x":"hello"}
    日期: {"x":new Date()}
    正则表达式: {"x":/hello/ig}
    数组:{"x":[1,2,3]}
    内嵌文档:{"x":{"foo":{bar}}}
    对象id:{"x":ObjectId()}
    二进制:
    代码:{"x":function(){}}

--save命令如果存在,则修改,如果不存在,则添加。
db.yc.save({"_id":1004,"name":"navy1"});

--修改
db.collection_name.update({条件},{要修改的数据});
db.yc.update({"_id":1002},{"name":"scott1","sex":"F"})

db.navy.insert({"_id":1001,"url":"www.hyycinfo.com","pageViews":1});
db.navy.insert({"_id":1002,"company":"yc","url":"www.hyycinfo.com","pageViews":1});

通过修改器修改:

$inc 增加对应的值
db.navy.update({"_id":1001},{"$inc":{"pageViews":1}}); --将_id为1001的文档中的pageViews键的值增加1
$set 
db.yc.update({"_id":1002},{"name":"scott1","sex":"F"})
db.yc.update({"_id":1002},{"$set":{"name":"scott1","sex":"F"}})
--将company变成一个数组
db.navy.update({"_id":1002},{"$set":{"company":["yc","nh","navy"]}})
--删除键 
db.navy.update({"_id":1002},{"$unset":{"company":1}}) --删除记录1002中的company键

–数组修改器

$push  向数组中添加值,可能会出现重复的值
    db.navy.update({"_id":1002},{"$push":{"company":"sc"}}); 

$each
    db.navy.update({"_id":1002},{"$push":{"company":{"$each":["hg","rc","jm"]}}});

$slice 指定最大的长度,它的值必须是负数,表示保留最后的n个值
    db.navy.update({"_id":1002},{"$push":{"company":{"$each":["yc1","yc2","yc"],"$slice":-10}}});

$pop 从数组中删除一个元素  key:1 从数据的末尾开始   key:-1从头部开始
    db.navy.update({"_id":1002},{"$pop":{"company":1}})

$pull从数组中删除匹配的值
    db.navy.update({"_id":1002},{"$pull":{"company":"sc"}})

db.navy.insert({
    "_id":1005,
    "content":"苹果好吃吗?",
    "comments":[
        {"comment":"好","count":0},
        {"comment":"很好","count":0},
        {"comment":"非常好","count":0}
    ]
})

–通过数组下标访问
db.navy.update({“_id”:1004},{“$inc”:{“comments.1.count”:1}});

db.navy.update({"comments.comment":"好"},{"$inc":{"comments.$.count":1}})
db.navy.update({"comments.comment":"很好"},{"$set":{"comments.$.comment":"很很好"}})

--MongoDB默认每次只修改一个文档,如果需要修改所有满足条件的记录,则需在后面添加条件{multi:true}
db.navy.update({"comments.comment":"好"},{"$inc":{"comments.$.count":1}},{multi:true})
db.navy.update({"comments.comment":"好"},{"$inc":{"comments.$.count":1}},false,true)

--删除
db.collection_name.remove({条件});

强大的查询功能:

    db.yc.find(); --查询所有
    db.yc.findOne(); --查询第一条记录
    db.yc.find({"_id":1002}); --查询_id为1002的记录
    db.yc.find({"_id":{"$gt":1002}}) --where key>val
    db.yc.find({"_id":{"$lt":1002}}) --where key<val
    db.yc.find({"_id":{"$gte":1002}}) --where key>=val
    db.yc.find({"_id":{"$lte":1002}}) --where key<=val
    db.yc.find({"_id":{"$ne":1002}}) --where key!=val

在一定范围上的查询$in

db.yc.find({"_id":{"$in":[1001,1002,1003]}})--类似于关系型数据库的where查询

不在其范围上的查询$nin

db.yc.find({"_id":{"$nin":[1001,1002,1003]}})

表选择$or

db.yc.find({"$or":[{"_id":1002},{"name":"xiaofeng"}]})

and and or 前2个表并列,后两个表选择

db.find({"sex":"F","$or":[{"name":"sys"},{"_id":1006}]})

分页查询limit,跳过前几条数据skip

db.yc.find().limit(3).skip(3);--跳过前面的3条记录,在实现3条一次分页查询

forEach,printjson实现循环输出

var cursor=db.yc.find();
cursor.forEach(function(obj){
    printjson(obj);
})

获得的结果如图:
这里写图片描述

排序sort

db.yc.find().sort({"_id":1}) --根据_id排序,1为升序,-1为降序
db.yc.find().sort({"name":-1})
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值