MongoDB常用操作总结
来源:互联网 发布:长得漂亮一直单身知乎 编辑:程序博客网 时间:2024/06/01 21:24
MongoDB常用操作总结
字段为map对象
map对象中的key的访问与嵌套字段的访问类似,用“.”符号;
db.request.update({"_id":ObjectId("57838820445de820d091d3ee")},{"$set":{"auditorsubmits.zl":true}, "$addToSet":{records:{stateid:3}, holders:"z"}}) //records,holders都为数组类型字段
aggregate操作结果为数组
输入如下命令:
db.process.aggregate({"$match":{"admins.users":"zhangle"}},{$project:{"perms":"$admins.perms", _id:0}})
返回结果如下:
{ "perms" : [ { "roleid" : 18, "role" : "OP", "groupid" : 2, "group" : "op-rd" } ]}
在golang中实现用如下代码:
pipeline := []bson.M{ {"$match": bson.M{"_id": bson.ObjectIdHex(processId)}}, {"$project": bson.M{"perms": "$admins.perms", "_id": 0}}, } res := bson.M{} err = c.Pipe(pipeline).One(&res) //取出perms数组,并做类型([]interface{})转换 ps, _ := res["perms"].([]interface{}) for _, v := range ps { //每个数组元素都为bson.M对象,转换类型 p, _ := v.(bson.M) //类型转换,第二个返回值表明是否成功转换。 //在此忽略,只是防止转换失败时,进程panic; 这样即使转换失败,转换的结果(如roleId)也可以正常获取该类型的“零值”。 roleId, _ := p["roleid"].(int) role, _ := p["role"].(string) groupId, _ := p["groupid"].(int) group, _ := p["group"].(string)}
mongdo自增”_id”
该对象为ObjectId类型,在shell中查询时需要带上类型转换:
db.process.find({_id:ObjectId("578758d261656e4ea2373bce")}, {name:1, _id:0})
结果如下:
{ "name" : "op财务审批" }
在golang程序下则如下表达:
c.FindId(bson.ObjectIdHex(id)).One(data)
该id转换成string:
r := bson.M{}profile.Id = r["_id"].(bson.ObjectId).Hex()
向数组类型字段添加一次性添加多个元素
//holders为数组类型,hs也为数组err = c.UpdateId( bson.ObjectIdHex(requestId), bson.M{"$addToSet": bson.M{"holders": bson.M{"$each": hs}}})
同时更新多个字段(数组及非数组类型)
err = c.UpdateId( bson.ObjectIdHex(requestId), bson.M{ "$set": bson.M{//以下为非数组类型字段 "curstateid": nextStateId, "curstatetype": newStateType, "curstatename": newStateName, "curgrouptype": newGroupType, "auditorsubmits": newAuditors, }, //向数组中添加单个值 "$addToSet": bson.M{ "records": *record, "holders": auditor, }, }, )
删除数组中的元素
//admins为数组类型字段,users为数组类型err = c.UpdateId( bson.ObjectIdHex(processId), bson.M{"$pullAll": bson.M{"admins": users}}, )
0 0
- MongoDB常用操作总结
- Mysql和MongoDB常用操作总结
- MongoDB总结(一):MongoDB 的安装和常用操作
- MongoDB常用操作
- MongoDB常用操作
- mongodb常用操作
- MongoDB常用操作
- MongoDB常用操作
- MongoDB常用操作
- MongoDB 常用基本操作
- MongoDB数据库常用操作
- MongoDB Shell 常用操作
- Mongodb常用操作
- MongoDB常用操作
- mongodb & mongoose 常用操作
- MongoDB常用操作
- Mongodb shell 常用操作
- MongoDB常用操作
- Android中的Fragment ---- 05(Activity和Fragment之间的通信)
- Linux从不懂得到熟练之路(一)
- generator自动生成mybatis的xml配置
- Spring学习笔记----JdbcTemplet和NamedParameterJdbcTemplate的使用
- 二路归并算法
- MongoDB常用操作总结
- Java与C++的异同比较[一]
- JAVA中常用的加密算法总结
- 如何安装TestNG
- 结构体指针的声明和定义
- PHP Math API方法归纳总结
- Tomcat安装配置详解及相关问题处理
- 最长上升子序列[模板]
- hadoop2.7.2详细完整配置