mongodb学习4-简单的CRUD

这里只以shell里的命令来演示,转换为代码其实就只是以BSON的文档来实现而已.

以local数据库为例,创建多个集合,以具体的实例来演示效果。

use local;

(一) insert命令

mongodb的shell可以用js的语法,定义一个对象post,

post = {"title":"post1",

"content":"hello mongo",

"time":new Date()}

查看post :post

db.blog.insert(post);// 将post对象写进blog集合,如果一开始这个集合不存在,会自动创建。

db.blog.find();//这里就会看到刚写入的对象; 或者使用db.blog.findOne() /*大小写敏感*/ 查看符合条件的第一条

 

以上的步骤也可以合并为一句

db.blog.insert(

{"title":"post1",

"content":"hello mongo",

"time":new Date()}

)


mongodb不提供事务操作,

(二)find

db.blog.find()//查找所有 默认显示20条 根据提示输入it可以查看更多。

条件查询db.blog.find({"title":"post1","content":"hello mongo"})

日期比较db.blog.find({"time":{"$gte":new Date("2014-11-18")}})  注意日期的命名方式和关键字new

常用的有$gt $gte $lt $lte $in $ne等比较符 ,还提供正则表达式 /hello/

(三) update

首要注意的地方:db.blog.update({"title":"post1"},{"content":"hello world"})这句并不是将blog集合里的这条记录的内容改成hello world,而是把整条文档(文档对应的关系数据库中的一行记录,这里叫文档改为"content":"hello world",不妨执行一下用find查看结果。


要达到上述效果 正确的做法是:db.blog.update({"title":"post1"},{$set:{"content":"hello world"}})

由于mongodb并没有固定结构,所以当set后跟的字段不存在的时候会自动创建!

举例来说db.blog.update({"title":"post1"},{$set:{"comments":["nice","cool"]}})

再查看就会发现多了一个comment字段了,该字段类型为数组,并且数组中也可以有多种类型。


除了$set还有个常用的修改符$inc (increase)

这里换个集合和案例来演示:

db.games.insert({"user":"ben","score":0})

db.games.insert({"user":"lily","score":0})

这时我们有了2个用户和得分记录:

db.games.update({"user":"ben"},{$inc:{"score":10}})
db.games.update({"user":"lily"},{$inc:{"score":20}})

find查看一下 看到得分都变了,如果是要减小 直接改为负数就可以了,同样的这里如果字段不存在的时候也会新建的。


在这里mongodb还有一个与传统关系型数据库不一致的地方,演示如下

db.games.insert({"user":"lily","score":0})//再插入一条user为lily的记录,由于主键是objectid所以并不冲突

db.games.update({"user":"lily"},{$inc:{"score":50}})//执行更新 

查看结果,发现只有第一条lily的得分改变了,

如果是要全部更新的话: db.games.update({"user":"lily"},{$inc:{"score":100}},{multi:true})


(四)remove

db.games.remove({})//删除全部,

条件删除中的条件与update的条件写法一致,不再赘述,

需要注意的是,如果是删除集合全部内容,可以用db.games.drop()来删除整个集合包括建立的所有索引,速度更快

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值