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

来源:互联网 发布:逆矩阵的求法 编辑:程序博客网 时间:2024/06/06 15:40
进入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
原创粉丝点击