>> 创建:·db.foo.insert({"bar":"baz"}) //如果文档中没有"_id"键会自动增加一个·db.foo.batchInsert([{"_id":0},{"_id":2}]) //只适用将多个文档插入到一个集合,不能单次请求中多个文档批量插入多个集合中 // 当前Mongo能接收最大的消息长度是48M # 插入校验·每个文档必须小于16M (Object.bsonsize(doc)查看bson大小) >> 删除:·db.foo.remove()//删除所有集合中的文档,但是不删除集合本身·db.foo.remove({"opt":true})·db.foo.drop()//删除整个集合(慎用) >> 更新:# 基本更新:·db.foo.update() //更新的过程中必须保证同一个文档键不能重复 # 修改器:·db.foo.update({"game":"game"},{"$inc":{"score":1000}}) //$inc 是对某个字段的值进行增加和减少操作,适用于数值类型·db.foo.update({"_id":1},{"$set":{"fav":"fav"}}) //修改非数值类型的字段的值·db.foo.update({"_id":1},{"$unset":{"fav":1}}) //删除这个键+ 数组修改器: + 添加元素:·db.foo.update({"title":"blog"},{"$push":{"comments":"comments"}}) //在文档中添加一个元素·db.foo.update({"title":"blog"},{"$push":{"comments":{"$each":[1,3,5]}})//添加多个值·db.foo.update({"title":"blog"},{"$push":{"comments":{"$each":[1,3,5],"$slice":-10}}) //设置添加元素的数量,"$slice"值为负整数·db.foo.update({"title":"blog"},{"$push":{"comments":{"$each":[1,3,5],"$slice":-10,"$sort":{"rating":-1}}}) //"$slice","$sort"与"$push"配合使用,必须使用"$each" # 数组操作:·db.papers.update({{"authors":{"$ne":"richie"}},{"$push":{"authors":richie}}}) //$ne先查询数组中是否存在这个元素·db.users.update({"_id":1},{"$addToSet":{"emails":"[email protected]"}}) //避免插入重复的值·db.users.update({"_id":1},{"$addToSet":{"emails":{"$each":["[email protected]","[email protected]"]}}}) ·db.blog.update({"post":post_id},{"$inc":{"comments.0.votes":1}})//基于数组的下标位置修改·db.blog.update({"commetns.author":"john"},{"$set":{"comments.$.author":"jim"}}) # 删除元素:·db.lists.update{{},{"$pull":{"todo":"laundry"}}} //指定条件删除某个元素,会将所有匹配的值删除·{"$pop":{"key":1}}//从数组末尾删除·{"$pop":{"key":-1}} //从数组头部删除 >> 特殊更新:·db.blog.update({"url":"/blog"},{"$inc":{"pageviews":1},true})//true如果没有找到更新条件的文档则创建·db.users.update({},{"$setOnInsert":{"createdAt":new Date()},true}) //创建时赋值,之后所有的更新操作都不会改变 # save(doc)函数:如果文档存在就更新文档,如果不存在就创建 >> 更新多个文档:??·findAndModify => 写入安全: >> 查询# 基本查询:·db.users.find({},{"username":1,"email":1,"_id": 0}) //指定某个字段显示 # 带条件的查询: 内层文档:"$lt"、"lte"、"$gt"、"gte" 对应<,<= ,> ,>= 外层文档:"$and","$or","$nor"·db.users.find({"registered":{"$lt":start}})·db.users.find({"username":{"$ne":"joe"}}) 查询所有名字不为joe的用户 ·db.raffle.find({"ticket":{"$in":[1,2,3]}}) //一个键与多个值匹配·db.raffle.find({"$or":[{"ticket":{"$in":[1,3,5]}},{"winner":true}]}) //or查询 ·db.users.find({"id_num":{"$mod":[5,1]}}) ·db.users.find({"id_num":{"$not":{"$mod":[5,1]}}}) => 一个键可以任意组合多个条件,但是一个键不能对应多个更新修改器 # 特定类型查询:·db.c.find({"z":{"$in":[null],"$exists":true}}) //null查询·db.users.find({"name":/joe/i})//正则表达式查询 # 数组查询:·db.food.find({"friut":{$all:["apple","banana"]}}) ·精确匹配对于数组依赖顺序
时间: 2024-08-28 10:04:03