MongoDB
库的增删改查
建库,使用库
use databases -- 当数据库不存在时会创建数据库并进入
查库
show dbs -- 查看所有的db db -- 查看当前进入的db
删除库
db.dropDatabase() -- 删除所选(进入的)数据库, 如果没有选择会删除默认的test数据库
表(集合: Collection)的增删改查
建表
db.createCollection(name, options) -- name表名, options配置信息 db.CollectionName -- 如同建库, 当表不存在时创建
查表
show tables show collections
删表
db.CollectionName.drop()
改表
数据(Documents)的增删改查
增加数据行
db.CollectionName.insert(document) -- 可以传递一个对象添加一个, 或者传递一个数组添加多个 -- 官方推荐的写法 db.CollectionName.insertOne(document) -- 返回的有新添加document的_id db.CollectionName.insertMany(document) -- 返回的有新添加document的_id的列表
删除数据行
db.CollectionName.remove({条件},justOne) -- justOne如果设置true或1,只会删除一个文档, 如果不写条件会删除所有的文档 官方推荐写法 db.CollectionName.deleteOne({条件}) -- 删除一条数据 db.CollectionName.deleteMany({条件}) -- 删除多条数据
查看数据行
db.CollectionName.find({条件}) -- 查询满足条件的 db.CollectionName.findOne({条件}) -- 查询一条满足条件的
修改数据行
db.CollectionName.updata({条件},{$set:{更新信息}}) -- 默认只更新一个, 需要在参数里添加一个{multi:true}的字典 db.CollectionName.updataOne({条件},{$set:{更新信息}}) -- 更新一个 db.CollectionName.updataMany({条件},{$set:{更新信息}}) -- 更新多个 db.CollectionName.save({_id:ObjectId(),NEW_DATA}) -- 根据_id来更新
$构造条件
{k:v,k1:v1} -- 多kv的and关系, 如果k对应的是一个数组, 而v是一个元素, 会判断这个数组里有没有这个元素 {$or:[{},{}]} -- $or构造or关系 {$and:[{},{}]} -- $and构造and关系 {$in:[{k:[v,v,v,v]},{}]} -- $in存在与 {$all:[{k:[v,v,v,v]},{}]} -- $all子集关系 -- 比较关系 {<key>:{$eq:<value>}} -- 等于 {<key>:{$lt:<value>}} -- 小于 {<key>:{$lte:<value>}} -- 小于等于 {<key>:{$gt:<value>}} -- 大于 {<key>:{$gte:<value>}} -- 大于等于 {<key>:{$ne:<value>}} -- 不等于
$修改器
上面介绍的$set简单粗暴, 直接是重新设置, 娶她相似的还有很多 $inc -- 进行自增操作 db.table.updataOne({'score':20},{$inc:{"score":1}}) $unset -- 用来删除一个键 db.table.updataOne({'score':20},{$unset:{"score":1}}) $push -- 向数组中添加元素 db.table.updataOne({'score':20},{$push:{"list_key":1}}) $pull -- 删除数组中的指定元素 db.table.updataOne({'score':20},{$pull:{"list_key":1}}) $pop -- 删除数组第一或最后一个元素 db.table.updataOne({'score':20},{$pop:{"list_key":1}}) -- 1删除最后, -1删除最前 -- 元组指定索引设定 db.user_info.updateOne({hobby:6},{$set:{"hobby.6":"六"}}) -- 注意hobby对应的是个数组, -- 上面这个命令意思是找到第一个hobby里面有6的把第六个元素设置为六 -- 当我们不知道索引是多少时, 可以使用$字符 db.user_info.updateOne({hobby:6},{$set:{"hobby.$":"六"}}) -- $代表了前面条件中6的索引 -- object操作 db.user_info.updateOne({name:"200wansui"},{$inc:{"info.tizhong":-5}}) db.user_info.updateOne({name:"200wansui"},{$set:{"info.long":12.5}}) -- array+object, 数组中存在字典, 取值时可以取键, 而设置时需要制定索引 db.user_info.updateOne({"hobby.shengao":150},{$set:{"hobby.$.long":14}}) -- hobby是个数组, 其中存着一个对象
排序分页
-- limit db.user_info.find({}).limit(5) 选取数据从当前位置选择5个 -- skip 跳过 db.user_info.find({}).skip(2) 从0开始跳过2条数据为当前位置 -- sort db.user_info.find({}).sort({ id:-1 }) 根据ID进行排序 -1倒叙 1正序 -- limit+skip+sort db.user_info.find({}).limit(5).skip(10) db.user_info.find({}).limit(c).skip((p-1)*c) db.user_info.find({}).limit(5).skip(5).sort({ id:-1 }) -- 优先级最高的是 sort -- 其次优先为 skip -- 最低优先级 limit
mongoDB数据类型