zoukankan      html  css  js  c++  java
  • MongoDB笔记

    mongo模块
    mongo -- 客户端,连接到mongo数据库
    mongod -- 服务端,启动mongo服务,默认占领27017端口
    mongodump -- 数据库备份
    mongorestore -- 数据库恢复
    bsondump -- 数据导出成bson结构
    mongoexport -- 数据库导出成json文档或csv文档
    mongos -- 路由器,用于数据库集群、分片

    mongo启动
    mongod --dbpath xx --logpath xx --fork --port 27017
    dbpath -- 数据存储路径
    logpath -- 日志存储路径
    fork -- 后台运行
    port -- 端口号 默认27017
    smailfiles 可以最小的启动mongod服务(占领400M左右磁盘空间)

    mongo db数据库
    show dbs -- 查看当前数据库
    use [dbName] -- 显示创建或使用该数据库
    db.dropDatabase(); -- 删除当前数据库

    mongo collections表
    show collections -- 查看当前所有collection
    db.createCollection([collectionName]); -- 显示创建collection
    db.[collectionName].insert(); -- 隐式创建collection
    db.[collectionName].drop(); -- 删除collection

    mongo 增删改查
    {db: 'test', collection: 'stu'}
    use test;
    -- db.stu.insert(document)
    db.stu.insert({_id: '1', sid: '001', name: 'xiaoming'}) // 添加单行数据
    db.stu.insert([{},{},{}]) // 添加多行数据
    -- db.stu.remove(query, options)
    db.stu.remove() // 删除collection所有数据
    db.stu.remove({name: 'xiaoming'}) // 删除全部指定数据
    db.stu.remove({name: 'xiaoming'}, true) // 删除一条指定数据
    -- db.stu.update(query, update, options<upsert, multi>)
    db.stu.update({sid: '001'}, {name: 'xiaohong'}) // 替换数据
    db.stu.update({sid: '001'}, {$set:{name: 'xiaohong'}}) // 更新1条数据
    db.sud.update({name: 'xiaoming'}, {$set:{name: 'xiaohong'}, {multi: true}}}) //更新多条数据
    <$set $unset $rename $inc $setOnInsert> <upsert-没有匹配直接插入 multi多行>
    -- db.stu.find(query, content)
    db.stu.find() // 查询所有数据
    db.stu.find({sid: '001'}) // 查询指定数据
    db.stu.find({sid: '001'}, {_id: 0, name: 1}) // 查询指定数据显示特定属性
    -- 更多查询条件
    <$ne $lt(e) $gt(e) $in $nin>
    <$all $exist $mod $type> 
    <$where $regex>
    db.stu.find({_id: '1', name: {$ne: 'xiaoming'}}) // and查询
    db.stu.find({$or: [{_id:'1'}, {id: {$lt:2}}]}) // or查询
    db.stu.find({_id: '1', $or: [{name: 'x'}, {name: 'xx'}]}) // and+or查询
    db.stu.find({$nor: [{}, {}]}) // nor查询
    db.stu.find({$where: "this.name=='xiaoming'"})
    db.stu.find({name: {$regex: '.*'}})
    <.skip() .limit()>

    mongo cursor游标
    var cursor = db.[collectionName].find(query);
    cursor -> <next()、hasNext()>
    cursor.forEach(function(obj) {printjson(obj)})

    mongo index索引 <btree二叉树 hash哈希-两种索引方案>
    创建索引-- db.[collectionName].ensureIndex(index, options)
    ensureIndex({name: [1/-1/'hash']}) // 单列索引
    ensureIndex({name: 1, age: 1}) // 多列索引
    ensureIndex({'grade.math': 1}) // 子索引
    ensureIndex({name: 1}, {unique: true, sparse: true}) // 唯一索引、稀疏索引(包含索引字段的数据才建立索引)
    删除索引-- db.[collectionName].dropIndex(index) | dropIndexes()
    修复索引-- db.[collectionName].reIndex()
    显示索引-- db.[collectionName].getIndexes()

    mongo auth用户管理
    后台启动服务时添加 --auth 启动权限验证
    添加超级用户 use admin -> db.addUser('user', 'pwd', 'true/false-可读/可写')
    登录时认证 db.auth('user', 'pwd')
    修改密码 db.changeUserPassword('user', 'newpwd')
    删除用户 db.removeUser('user')

    mongo 备份恢复
    mongoimport/mongoexport - mongodump/mongorestore
    --导出json、csv格式及恢复(使用不同数据库数据转移)
    mongoexport -d dbName -c collectionName -f 列名 -q query条件 [--csv] -o 文件位置
    mongoexport -d test -c stu -f sid,name -q '{name:'xiaoming'}' [--csv] -o ./test.stu.[json/csv]
    mongoimport -d test -c stu --type json --file ./test.stu.json
    mongoimport -d test -c stu -f sid,name --type csv --headerline --file ./test.stu.csv
    --导出bson格式及恢复(同时导出bson数据文件和json索引文件,体积更小,包含索引信息)
    mongodump [-d -c -f -o]
    mongorestore [-d -c -f --directoryperdb dump/test]

    mongo 复制集
    实现步骤:
    cd /usr/local/var/
    mkdir mongodb/m17 mongodb/m18 mongodb/m19
    mongod --dbpath mongodb/m17/ --logpath log/mongodb/m17.log --logappend --port 27017 --fork --smallfiles --replSet rsTest
    mongod --dbpath mongodb/m17/ --logpath log/mongodb/m18.log --logappend --port 27018 --fork --smallfiles --replSet rsTest
    mongod --dbpath mongodb/m17/ --logpath log/mongodb/m19.log --logappend --port 27019 --fork --smallfiles --replSet rsTest
    mongo --port 27017
    use admin
    var rsconfig = {
    _id: 'rsTest',
    members: [
    {_id: 0, host: 'localhost:27017'},
    {_id: 1, host: 'localhost:27018'},
    {_id: 2, host: 'localhost:27019'}
    ]
    }
    rs.initiate(rsconfig)
    --- 以上已完成复制集相关配置
    --- 以下为加入auth、keyfile及mongoose接入
    keyfile创建--
    openssl rand -base64 64 > keyfile.dat #生成64字节密钥文件
    chmod 600 keyfile.dat 设置权限
    将keyfile文件复制到所有节点下
    用户权限设置--
    use admin
    db.createUser({user:'root',pwd:'123456',roles:['root']}) #超级用户
    use test
    db.createUser({user:'test',pwd:'123456',roles:[{role:'readWrite',db:'test'}]})
    mongo.conf文件配置--
    keyfile='./keyfile.dat'
    auth='true'
    mongoserver启动及rs相关操作--
    mongod -f xx.conf
    use admin
    db.auth('root', '123456')
    rs.status()
    rs.slaveOk()
    rs.conf()
    rs.add()
    rs.remove()
    rs.reconfig()
    db.shutdownServer()
    mongoose可以传多个url并设置replSet的值'rstest'

    mongo 分片

    ~持续补上更多.

  • 相关阅读:
    Android 8.0 adb shell dumpsys activity activities | findstr mFocusedActivity 获取当前的 activity 显示空的
    spring-in-action_day01
    spring-in-action_day02
    spring-in-action-day04-配置属性 @ConfigurationProperties
    springmvc接收参数
    spring中Utils工具类注入问题
    Eclipse Push出现rejected
    Eclpis-cannot open git-receive-pack
    IO
    LinkedHashmap简要说明
  • 原文地址:https://www.cnblogs.com/easyToCode/p/5196915.html
Copyright © 2011-2022 走看看