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

  • 相关阅读:
    python print format
    ElasticSearch的lowlevelApi和低级别API
    Ubuntu下搜狗输入法突然无法输入中文
    mysql基本操作
    eclipse配置代码自动提示
    使用JAAS登录kerberos服务器
    centos7配置kerberos服务,并使用JAAS登录
    LDAP none、simple、strong 笔记
    linux下yum安装最新稳定版nginx
    Mybatis if标签判断大小
  • 原文地址:https://www.cnblogs.com/wwg945/p/10171365.html
Copyright © 2020-2023  润新知