• MongoDB简单使用


    在启用mongodb服务的时候,会有三个警告:

    第一个警告: Linux内存动态分配,mongo占用内存较大,官方推荐关闭动态分配所以警告

    第二个警告:  默认分配给mongo的进程和文件数量限制过低,需要重新分配

    第三个警告: 我们用root权限启动mongo,数据不安全.用--auth来创建用户,来认证

    简介:

    1.类似json格式, 键值对形式,每一条叫文档, 2.不用事前创建数据库,给数据就会自动创建 3.mongoDB必须是utf-8

    启动mongo命令: 

    1.sudo mongod   是启用服务的命令 

     

    2.# 启动mongod,并指定数据存储目录(目录必须存在,且有读写权限)

    sudo mongod --dbpath=/xxxxx/xxxx

     

    3.使用守护进程方式启动,--fork,就必须启动logpath

    sudo mongod--logpath=/data/db/mongodb.log --fork

     

    4.使用用户认证方式启动

    sudo mongod --auth

    进入shell

    命令:mongo---use admin---db.createUser({user: 'python', pwd:'python', roles: ['root']})

    登录db.auth('python','python')

    换个用户名,可以设置权限roles:[{role: "read", db: ''test'}]

    各个数据库的默认端口拓展

    MongoDB端口27017

    redis端口 6379

    mysql端口 3306

    mongo进入客户端

    7. 查看当前数据库下所有的用户信息.

    > db.system.users.find()

    show collections

    13. 删除bigcat用户

    > db.dropUser("bigcat")

    MongoDB的服务器统计,需要在MongoDB客户端键入命令db.stats()

    查看当前数据库名

    db

    查看所有数据库名

    show dbs

    切换数据库,没有暂时不创建,插入数据时数据库才被创建

    use 数据库名

    删除数据库

    db.dropDatabase()

    集合命令

    db.createCollection(name)--->向不存在的集合第一次添加数据时,集合也被创建

    >db.createCollection("stu", {capped : true, size :6142800} )

    ----参数capped:默认值为false表示不设置上限,值为true表示设置上限

    ----参数size:当capped值为true时,需要指定此参数,表示上限大小,当文档达到上限时,会将之前的数据覆盖,单位为字节

    语法 :

    查看当前数据库的集合

    show collections

    删除集合命令

    db.stu.drop()

    插入

    db.集合名.insert({})

    insert添加相同_id的数据, 就会出错

    db.集合名.save({})

    save = insert + update

    语法与insert 相同,相同_id就会修改

    修改/添加

    db.stu.update({修改条件},{修改后的内容})默认修改匹配到的第一条文档全部数据

    update({修改条件},{$set:{age:30}})只修改文档age30,其他字段不变,默认修改第一个匹配到的文档

    db.stu.update({},{$set: {age = 100}})修改所有文档中的age100,默认修改第一个匹配到的文

    匹配所有文档的:

    db.stu.update({},{$set: {age = 100}},{multi:true}) 红色的参数就是让匹配所有文档

    查询:

    db.stu.find() 查询所有符合匹配条件的文档

    db.stu.findOne() 查询第一个符合匹配的文档

    db.stu.find({age: 18}).pretty()格式化输出

    比较运算符

     

    大于小于,大于等于,小于等于,默认是等于

     

    db.stu.find({age: {$lt : 18}}) 小于18
     
    逻辑运算符
    默认是and,表示两个都满足
    db.stu.find({age:18, gender: false})
    or表示满足任何一个条件即可,每一个条件都要是单独字典
    db.stu.find({$or: [{age:{$lt: 25}}, {gender: False}]})
     
    or 和 and 配合使用
    db.stu.find({age: {$in : [16, 18,20]}})
     
    支持正则
    db.stu.find({name: /段/}) 斜杠里就是正则
    db.stu.find({name : {$regex: '黄', $options: :"$i"}})
    忽略大小写修饰符
    $options: :"$i"
     
    自定义查询:
    db.stu.find($where : function(){return this.age < 20})
     
    db.stu.find().limit(3)显示前三个
    skip(2)跳过前两个
    可以组合使用,
     
    投影
    表明显示哪些数据
    db.stu.find({}, {name: 1})1,true表示显示,0,false表示不显示,_id是默认显示的
     
    排序
    find().sort({age: 1}) 1是升序,-1是降序
     
    统计个数
    db.stu.find({条件}).count()
    也可以
    db.stu.count({条件})
     
    消除重复
    db.stu.distinct('age', {})
    只会返回'age'的字段,{}查询的条件,返回值是列表
     

     

    各个参数

    "db":"test",表示当前是针对"test"这个数据库的描述。想要查看其他数据库,可以先运行$ use datbasename

    "collections":3,表示当前数据库有多少个collections.可以通过运行show collections查看当前数据库具体有哪些collection.

    "objects":267,表示当前数据库所有collection总共有多少行数据。显示的数据是一个估计值,并不是非常精确。

    "avgObjSize":623.2322097378277,表示每行数据是大小,也是估计值,单位是bytes

    "dataSize":16640,表示当前数据库所有数据的总大小,不是指占有磁盘大小。单位是bytes

    "storageSize":110592,表示当前数据库占有磁盘大小,单位是bytes,因为mongodb有预分配空间机制,为了防止当有大量数据插入时对磁盘的压力,因此会事先多分配磁盘空间。

    "numExtents":0,没有什么真实意义

    "indexes":2,表示system.indexes表数据行数。

    "indexSize":53248,表示索引占有磁盘大小。单位是bytes

    "ok":1,表示服务器正常

    SQL和MongoDB对比

    SQL术语/概念

    MongoDB术语/概念

    解释/说明

    database

    database

    数据库

    table

    collection

    数据库表/集合

    row

    document

    数据记录行/文档

    column

    field

    数据属性/字段()

    index

    index

    索引

    primary key

    primary key

    主键,MongoDB默认自动将_id字段设置为主键,可以手动设置

    以上是总结

  • 相关阅读:
    java Class的 getSuperclass与getGenericSuperclass区别
    再有人问你volatile是什么,把这篇文章也发给他
    深入理解乐观锁与悲观锁
    再有人问你Java内存模型是什么,就把这篇文章发给他
    再有人问你synchronized是什么,就把这篇文章发给他
    《成神之路-基础篇》JVM——Java内存模型(已完结)
    css
    css
    require.js
    css -border
  • 原文地址:https://www.cnblogs.com/ppansj/p/7987994.html
Copyright © 2020-2023  润新知