• MongoDB Shell 经常使用操作


     数组查询

    数组查询

    MongoDB 中有子文档的概念。一个文档中能方便的嵌入子文档,这与关系性数据库有着明显的不同,在查询时,语法有一些注意点。

    样例代码,假如我们的一个集合(tests)中存在标签键。有例如以下模式:

    tags: [ObjectId]
    查询含有某个标签 ID 的文档
    db.tests.find({tags: tagId});
    我如今有一组标签 tagIds,即是数组,须要查询含有该数组中任一元素的文档。此时须要用到 $in 操作符
    db.tests.find({tags: {$in: tagIds}});
    如需唯一匹配该数组,与通常查询无异
    db.tests.find({tags: tagIds});
    如不考虑顺序关系影响,即同一时候含有 tagIds 中的每一个元素,用 $all

    db.tests.find({tags: {$all: tagIds}});



     MongoDB数据导出及导入

    我眼下用到的各自是 mongodump 和 mongorestore。他们语法挺相似。

    导出

    mongodump --host localhost:27017 /data/backup/csser.com/csser.3-9/
    表示将当前数据库导出到 csser.3-9 文件夹中去,导入用 mongorestore 就可以恢复。

    导入

    mongorestore --host localhost:27017 /data/backup/csser.com/csser.3-9/
    表示将 csser.3-9 文件夹下的数据导入到 MongoDB 中。


     安全停止并退出MongoDB

    安全停止并退出 MongoDB

    不管怎样都要避免直接 kill -9 MongoDB 进程。如需正常安全的退出,向进程发送 SIGINT 或 SIGTERM 信号,如:

    $ sudo kill -2 pid // SIGINT
    // 或
    $ sudo kill pid // SIGTERM


     查看集合占用空间

    查看集合占用空间

    > db.sessions.dataSize()
    22658540

     监控和释放MongoDB占用的内存

    监控和释放 MongoDB 占用的内存

    查看内存使用情况:

    PRIMARY> use csser
    switched to db csser
    PRIMARY> db.serverStatus().mem
    {
    	"bits" : 64,
    	"resident" : 82,
    	"virtual" : 5366,
    	"supported" : true,
    	"mapped" : 2463,
    	"mappedWithJournal" : 4926
    }
    释放内存:

    db.runCommand({closeAllDatabases:1})

     查看MongoDB连接数

    查看 MongoDB 连接数

    > db.serverStatus().connections
    { "current" : 10, "available" : 809 }

     进入Shell

    进入 Shell

    通过 mongo 命令连接数据库后,会自己主动进入 MongoDB Shell,默认连接的是 test 数据库。进行例如以下操作了解 Shell 基本指令:

    > help
    db.help()                    #查看 db 方法
    db.mycoll.help()             #查看集合方法
    rs.help()                    #查看 replica set 方法
    help admin                   #管理员帮助
    help connect                 #连接数据库帮助
    help keys                    #快捷键帮助
    help misc                    #了解 misc 
    help mr                      #mapreduce
    
    show dbs                     #打印本server存在的数据库名称列表
    show collections             #打印当前数据库的集合列表
    show users                   #打印当前数据库的用户
    show profile                 #打印 1s 内的 system.profile
    show logs                    #打印 logger 名称
    show log [name]              #打印内存中最新的一条日志记录,[name] 默觉得 'global'
    use <db_name>                #切换数据库
    db.foo.find()                #列出集合 foo 中的对象列表
    db.foo.find( { a : 1 } )     #列出集合 foo 中满足条件 a== 1 的对象列表
    it                           #查看 find 返回列表的其余部分
    DBQuery.shellBatchSize = x   #设置 shell 默认显示的项的个数
    exit                         #退出 mongodb shell
    MongoDB shell 内嵌了 Javascript 解析器,所以能够在当中书写 Javascript 代码。

     连接数据库

    连接数据库

    mongo [options] [db address] [文件名称 (以.js结尾)]

    db address 能够仅仅指定数据库名(比方:csser),此时连接本地数据库csser。

    也能够这样:192.169.0.5:27018/csser,表明连接192.169.0.5server27018port的csser数据库,port号能够省略。默觉得27017。

    假设指定文件名称。在不指定 --shell 參数的情况下,进程在运行完这些js文件之后会自己主动退出。文件名称必须以.js结尾。

    查看 MongoDB 版本号:

    mongo --version

    在执行 mongo 命令时不自己主动连接数据库:

    mongo --nodb


  • 相关阅读:
    共享开发者账号
    IOS开发之关键字synchronized
    svn in xcode5
    Xcode5真机调试
    iOS autolayout
    ios正则表达式
    UITextView与UITextfield的区别
    MyBatis笔记(一)
    JAVA命名规则
    ORACLE SQL DEVELOPER配置
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7337393.html
Copyright © 2020-2023  润新知