mongodb学习笔记1,增删改语法

进入mangodb:
./mongo

使用数据库
use bbs

查看文档数据个数
db.account.count()

删除数据
db.account.remove()

文档插入
当个文档插入:
db.account.insert({"userName":"bbs10000000","passwd":"ddddd","acctAttr":null})

查看
db.account.find()

mongodb会默认分配一个id
"_id":objectId("hr32iobn14jk32h1kh43k21hk432")

也可以自己指定id值
db.account.insert({"_id":"1","userName":"bbs10000000","passwd":"ddddd","acctAttr":null})

批量插入,受mongodb消息大小影响,最大消息16M

插入原理 :驱动将文档转为bson,检查是否有_id健,传入数据库,数据库解析bson,不做有效性校验,原样存入数据库中。
id分配是由客户端驱动完成的,不是服务器端生成的。
文档大小不能超过4M

删除文档
db.account.remve()  表示删除集合里的所有数据,索引还在,效率低
db.account.drop() 表示删除集合里所有数据和索引,性能好

JMongoBrowser软件可以访问mongdb,开源免费的。
MongoView功能强大一些,但是收费。

默认端口27017
local、admin是默认就存在的库

mongdb不支持事物,除此以外一般mysql可以做的mongdb都可以做到。

删除
db.account.remove({"userName":"bbs1100"})
查询
db.account.find({"userName":"bbs1100"})

文档更新
全量更新命令:
把updateName为bbs10的记录更新成新对象{...}
db.account.update({"updateName":"bbs10"},{"userName":"bbs10","passwd":"fff"})
_id是主键,不能更新

局部更新或者添加:修改器 $set
db.account.update({"updateName":"bbs10"},{"$set":{"passwd":"eee"}})

去掉一个键:修改器 $unset:
db.account.update({"updateName":"bbs10"},{"$unset":{"passwd":"eee"}})

数字增加:修改器 $inc:
对age加1
db.account.update({"updateName":"bbs10"},{"$inc":{"age":1}})

数组添加$push
db.account.update({"updateName":"bbs10"},{"$push":{"email":"aaa@163.com"}})
数据库中为
{"_id":"1","userName":"bbs10000000","passwd":"ddddd","email":["aaa@163.com"]}

数组增加值时避免重复增加$addToOSet
db.account.update({"updateName":"bbs10"},{"$addToOSet":{"email":"aaa@163.com"}})

数组从尾删除$pop
db.account.update({"updateName":"bbs10"},{"$pop":{"email":1}})
若从头删除则为-1
db.account.update({"updateName":"bbs10"},{"$pop":{"email":-1}})

数组中删除指定值$pull
db.account.update({"updateName":"bbs10"},{"$pull":{"email":"aaa@163.com"}})

多文档更新
update第四个参数为true表示多个文档更新
db.account.update({"updateName":"bbs10"},{"$set":{"passwd":"eee"}},false,true)

查看被更新的文档个数
db.runCommand({getLastError:1})
mongodb驱动不等待数据库执行结果,但是执行getLastError时,驱动程序会等待数据库返回结果

更新多个属性
db.account.update({"updateName":"bbs10"},{"$set":{"passwd":"eee","age": 25}},false,true)

java中
public Account add(Account entity) {
    DBCollection coll = connection.getCollection(COLLECTION_ACCOUNT);
    entity.set_id(supper.geterationID());
    //这里WriteConcern.NONE表示执行后不等待执行结果,性能高
    //如果用WriteConcern.SAFE则表示等待执行结果,即把getLastError带过去,性能较差
    coll.insert(entity.toDBObject(),WriteConcern.NONE);
    
    return entity;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值