时间:2021-07-01 10:21:17 帮助过:2人阅读
2.删除
db.blog.remove({}) //删除blog中的所有文档,但不会删除集合本身以及索引 db.blog.remove({"age":"18"}) //删除blog中所有age为18的文档 //如果追求速度 删除整个集合,然后再重新创建索引会比较快 相对于删除所有文档 db.blog.drop() //未验证是否真的快很多
3.更新
db.blogs.insert({"name":"joe",age:18,frineds:"tom"}) //以下是更新步骤 var joe=db.blogs.findOne({"name":"joe"}) //此处不可用find() find返回的是游标 joe.relationship={"friends":"kate"} joe.age=19 db.blogs.update({"name":"joe"},joe);//将修改后的文档进行更新 如果集合中存在多个name为joe的文档,则会尝试更新多条,但是joe中的_id是固定的,所以会造成错误。更新时需注意唯一性
3.1修改器
一般只需修改文档中的部分内容,此时采用修改器比较合适(原子性)
//eg1 记录页面被访问次数的文档,每当被访问的时候加一 $inc 对之后的键加指定值(该值为负可实现减法) 如果键不存在则会添加该建并置为指定值 db.web.insert({"pageName":"cnblogs","times":1}) db.web.update({"pageName":"cnblogs"},{"$inc":{"times":1}})
//eg2 直接修改值 $set 会直接修改 如果修改的键不存在,则会添加该键并置为指定值 db.web.update({"pageName":"cnblogs"},{"$set":{"times":88}}) //eg3 修改内嵌值 db.blog.update({"name":"joe"},{"$set":{"relationship.friends":"Lin"}})
//eg4 删除指定键 $unset会删除指定键 该例中会删除age键 db.blog.update({"name":"joe"},"&unset":{"age":1})
//对数组的操作 $push 会插入到数组的末尾 db.web.insert({"name":"test","bin":[1,2,3,4,6]}) db.web.update({"name":"test"},{"$push":{bin:5}}) db.web.insert({"name":"try","bin":[{"id":1},{"id":2}]}) db.web.update({"name":"try"},{"$push":{"bin":{"id":3}}})
//数组操作 $ne配合 $push db.web.insert({"name":1,"bin":[1,2,3]}); db.web.insert({"name":2,"bin":[1,2,3,4]}); db.web.update({"name":{"$ne":1}},{"$push":{"bin":4}})//为name为1的文档中的bin添加4 db.web.update({"bin":{"$ne":4}},{"$push":{"bin":4}}) //若bin中没有4,则添加4
//addToSet 如果没有则添加 取代了$ne和$push的组合 db.web.update({"name":1},{"$addToSet":{"bin":20}}) //对于name为1的文档如果bin中没有20则添加
//$addToSet 配合 $each 添加数组中不同的内容 db.web.update({"id":1},{"$addToSet":{"bin":{"$each":[1,2,3,4,5]}}})
//删除数组中的元素 $pop db.web.update({"id":1},{"$pop":{"bin":1}}) //从数组末尾删除一个 db.web.update({"id":1},{"$pop":{"bin":-1}}) //从数组开头删除一个 //删除数组中的元素 $pull db.web.update({"id":1},{"$pull":{"bin":1}}) //从数组中删除所有为1的项
//数组的定位操作 $ db.web.update({"bin":3},{"$inc":{"bin.$":3}})
// $upsert 有则更新,没有则根据查询条件和更新内容添加新文档 update的第三个参数为true则为upsert db.web.update({"id":3},{"$push":{"bin":8}},true)
// $save 存在_id使调用upsert 否则调用insert var x=db.web.findone(); x.id=9 db.web.save(x)
//更新匹配的多个文档 //正常情况下即使匹配多个也只更新匹配到的第一条,update的第四个参数为true则匹配多条 db.web.update("id":{"$ne":100},{"&push":{"bin":100}},false,true) //为所有id不为100的文档的bin添加100
二、查询
//用逗号隔开为多个条件 条件1and条件2 db.web.find({"id":1,"name":"blog"})
//返回指定的键 find函数的第二个参数指定要返回和不需要返回的键 1为需要返回 0为不需要返回 db.web.find({"id":1},{"id":1,"_id:0"})
// $lt $lte $gt $gte 分别对应 < <= > >= db.web.find({"age":{"$gt":10,"$lt":18}}) //查找age在(10,18)范围的文档
var date=new Date db.web.find({"datetime":{"$gt":date}})
// $in 某个键值匹配任意一项 $or 任意一个条件达成 db.web.find({"id":{"$in":[1,2,3]}}) //查找id为 1 2或3 的文档 db.web.find({"$or":[{"id":1},{"age":3}]}) //查找id为1或年龄为3的文档
// $mod取余 $not 取反 db.web.find({"id":{"not":{"$mod:[5,1]"}}}) //取id 除5后不余1的id 如2,3,4,5,7
//正则表达式 /××××××××××/ db.web.find({"name":/[0-9]*/}) //查找名称为数字的文档
//查询数组 $all db.web.find({"bin":{"$all":[1,2,3]}}) //查找bin中包含1,2和3的文档
mongoDB 读书笔记(初级命令)
标签: