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数据类型

 

posted @ 2018-12-24 22:24  瓜田月夜  阅读(259)  评论(0编辑  收藏  举报