• mongodb安装,库操作,集合操作(表),文档操作(记录)


    安装

    1.下载地址
    https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.8-signed.msi
    2.如果报没有权限的错,将配置文件的.cfg的最后一行的mp:删除
    3.4.0版本已将mongodb加入了系统服务,开机自启
    win+R>>>服务>>>mongodb
    4.此时没有任何的权限限制,默认是管理员
    5.在.cfg文件中修改
    security:
        authorization: enabled
    # 注意缩进
    6.重启服务
    7.mongo >>>>show  dbs(未登陆没有任何库显示)
    8.登陆 use admin
    	db.auth("root","root")>>>>>1登陆成功后显示1
     show dbs>>>登陆成功后显示所有库
    

    库的操作

    创建数据库
    use 数据库名称 #如果数据库存在切换,如果不存在新建并切换
    #新建的库里没有没有数据,使用show dbs是不会显示的
    
    查看数据库
    show dbs
    
    删除数据库
    db.dropDatabase()
    #区分大小写
    

    集合的操作(相当于mysql的表)

    use 数据库 先切到数据库
    #创建集合
    db.user
    
    #查看集合
    show collections or show tables#与库相同,集合中没有数据不会显示
    
    #删除集合:
    db.blog.user.drop()
    

    数据类型

    #null:用于表示空或不存在的字段
    {"x":null}
    #布尔型:true 和 false
    {"x":true,"y":fasle}
    #数值
    {"x":3,"y":3.1414}
    #字符串
    {"name":"egon"}
    #日期
    d = {"x":new Date()}
    d.x.getHours()
    #正则表达式/ /
    d={'pattern':/^egon.*?nb$/i}
    #数组
    d={'x':[1,'a','v']}
    #内嵌文档
    user={'name':'jerry','addr':{'country':'China','city':'YT'}}
    user.addr.country
    #对象id:是一个12字节的ID,是文档的唯一标识,不可变
    d={'x':ObjectId()}
    
    #案例:
    db.test.insert({"a":null,"b":1.1,"c":true,"d":100,"e":"aaaaaa","f":new Date(),"g":/^jerry.*nice$/i,"h":[1,2],"j":{"name":"smallJerry"}})
    
    db.tb.find()
    db.tb.find().pretty() # 格式化显示 findOne没有pretty()方法
    

    文档操作

    #没有指定_id则默认ObjectID,_id不能重复,且在插入后不可变
    
    #插入单条
    db.test.insert({"_id":1,"name":"zb","age":18})
    #无则插入,有则覆盖
    db.test.save()
    #插入多条
    db.test.insertMany([{"_id":2,"name":"egon","age":28},{"_id":3,"name":"yhh","age":38}])
    

    查询数据

    #cmd清屏 cls
    #find
    查询所有匹配数据
    #findOne
    查找第一个匹配的
    

    比较运算

    use db
    db.表名.find(条件)
    比较运算
    #等于
    = >>>> {"name":"zb"}
    db.test.find({"name":"zb"})
    #不等于
    != >>>>{"name":{"$ne":"zb"}}
    db.test.find({"name":{"$ne":"zb"}})
    #大于
    >  >>>>{"_id":{"$gt":1}}
    db.test.find({"_id":{"$gt":1}})
    #大于等于
    >= >>>>{"_id":{"$gte":1}}
    db.test.find({"_id":{"$gte":1}})
    #小于
    <  >>>>{"_id":{"$lt":3}}
    db.test.find({"_id":{"$lt":3}})
    #小于等于
    <= >>>>{"_id":{"lte":3}}
    db.test.find({"_id":{"$lte":3}})
    

    逻辑运算

    #and 逗号分隔,多个条件就是and
    db.test.find({"_id":{"$lt":3,"$gt":1}})
    
    db.test.find({"_id":{"$lte":3,"$gt":1},"name":"egon"})
    
    #or
    db.test.find({"$or":[{'_id':{"$gte":3}},{"name":"zb"}]})
    
    #偶数 mod
    db.test.find({'_id':{"$mod":[2,1]}})#[2,1]>>除2余1
    
    #not
    db.test.find({'_id':{"$not":{"$mod":[2,1]}}})
    
    

    成员运算

    #in
    db.test.find({"_id":{"$in":[1,3]}})
    
    #not in
    db.test.find({"_id":{"$nin":[1,3]}})
    

    正则表达式

    db.test.find({"name":/.*?z.*?/})
    
    正则写在//内,后面的i代表:
    i 忽略大小写
    m 多行匹配模式
    x 忽略非转义的空白字符
    s 单行匹配模式
    
    

    指定字段

    #db.user.finde({过滤条件},{显示字段})
    db.test.find({'_id':3},{'_id':0,'name':1})
    0表示不显示 默认为0  1为显示 "_id"默认为1
    

    查询数组

    #准备数据
    use test1
    db.user
    
    user1 = {"_id":1,"name":"egon","hobbies":["play","girl","music","run"]}
    
    user2 = {"_id":2,"name":"alex","hobbies":["swim","girl","drink","tea"]}
    
    user3 = {"_id":3,"name":"yhh","hobbies":["girl","tea","fight","run"]}
    
    user4 = {"_id":4,"name":"aaa","hobbies":["run","girl","chicken","ball"]}
    
    db.user.insert(user1)
    db.user.insert(user2)
    db.user.insert(user3)
    db.user.insert(user4)
    
    #查询
    
    #查询爱好有girl的人
    db.user.find({'hobbies':'girl'})
    
    #查询爱好girl和drink的人
    db.user.find({"hobbies":{"$all":["girl","drink"]}})
    
    #查询第4个爱好为tea的人
    db.user.find({"hobbies.3":"tea"})
    
    #查询所有人最后两个爱好
    db.user.find({},{'hobbies':{"$slice":-2}})
    
    #查询所有人的第2个到第3个爱好
    db.user.find({},{"hobbies":{"$slice":[1,2]}})
    

    其他

    # 排序:1代表升序,-1代表降序
    db.user.find().sort({"_id":-1})
    db.user.find().sort({"name":-1,'_id':-1})
    
    #分页:limit代表取多少个document,skip代表跳过前几个document
    
    db.user.find({'hobbies':'girl'}).limit(1).skip(2)
    
    
    #获取数量
    db.user.count({'hobbies':'girl'})
    db.user.find({'hobbies':'girl'}).count()
    
    
    
    #{'key':null} 匹配key的值为null或者没有这个key
    #准备数据
    db.t2.insert({'a':10,'b':111})
    db.t2.insert({'a':20})
    db.t2.insert({'b':null})
    
    
    #查询结果
    > db.t2.find({"b":null})
    { "_id" : ObjectId("5a5cc2a7c1b4645aad959e5a"), "a" : 20 }
    { "_id" : ObjectId("5a5cc2a8c1b4645aad959e5b"), "b" : null }
    
  • 相关阅读:
    Ubuntu之修改用户名和主机名
    HM中CU,TU的划分
    BZOJ 3237([Ahoi2013]连通图-cdq图重构-连通性缩点)
    Introducing Regular Expressions 学习笔记
    kubuntu添加windows字体
    WISE安装程序增加注册控制
    Linux内核中常见内存分配函数(一)
    Linux内核中常见内存分配函数(二)
    Swift现实
    Android 5.0(L) ToolBar(替代ActionBar) 现实(四)
  • 原文地址:https://www.cnblogs.com/robert-zhou/p/10711876.html
Copyright © 2020-2023  润新知