[MongoDB] 运维相关操作记录

14. 大数据 同时被 2 个专栏收录
85 篇文章 0 订阅

前言

前段时间. 实战操作了下MongoDB. 在此将操作记录总结一下.


MongoDB 相关Bin

localhost:bin sean$ pwd
/Users/sean/Software/MongoDB/current/bin
localhost:bin sean$ ls
Untitled.js	mongo		mongodump	mongofiles	mongooplog	mongoreplay	mongos		mongotop
bsondump	mongod		mongoexport	mongoimport	mongoperf	mongorestore	mongostat

进入MongoDB的bin目录下, 我们发现MongoDB提供了如下工具.
PS: Windows平台部分命令没有, 需要安装单独的工具包。

  • mongod: mongoDB Server端.
  • mongo: client端
  • mongoimport 导入
  • mongoexport 导出

本篇主要就是基于mongo命令基础上, 后续进行操作.


连接

先通过--help看下基础命令.

localhost:bin sean$ ./mongo --help
MongoDB shell version v3.4.2
usage: ./mongo [options] [db address] [file names (ending in .js)]
db address can be:
  foo                   foo database on local machine
  192.168.0.5/foo       foo database on 192.168.0.5 machine
  192.168.0.5:9999/foo  foo database on 192.168.0.5 machine on port 9999
Options:
  --shell                             run the shell after executing files
  --nodb                              don't connect to mongod on startup - no
                                      'db address' arg expected
  --norc                              will not run the ".mongorc.js" file on
                                      start up
  --quiet                             be less chatty
  --port arg                          port to connect to
  --host arg                          server to connect to
  --eval arg                          evaluate javascript
  -h [ --help ]                       show this usage information
  --version                           show version information
  --verbose                           increase verbosity
  --ipv6                              enable IPv6 support (disabled by default)
  --disableJavaScriptJIT              disable the Javascript Just In Time
                                      compiler
  --disableJavaScriptProtection       allow automatic JavaScript function
                                      marshalling
  --networkMessageCompressors arg     Comma-separated list of compressors to
                                      use for network messages
  --jsHeapLimitMB arg                 set the js scope's heap size limit

Authentication Options:
  -u [ --username ] arg               username for authentication
  -p [ --password ] arg               password for authentication
  --authenticationDatabase arg        user source (defaults to dbname)
  --authenticationMechanism arg       authentication mechanism
  --gssapiServiceName arg (=mongodb)  Service name to use when authenticating
                                      using GSSAPI/Kerberos
  --gssapiHostName arg                Remote host name to use for purpose of
                                      GSSAPI/Kerberos authentication

file names: a list of files to run. files have to end in .js and will exit after unless --shell is specified
  • 无密码参数
    ./mongo 127.0.0.1:27017

  • 有密码授权
    ./mongo -u username -p password --authenticationDatabase authDataBaseName 127.0.0.1:27017


基本结构查询

  • 查询数据库 - show dbs

  • 查询数据库表 - show collections


简单查询

  • find() - db.col_name.find()

查询操作

  • pretty() - db.col_name.find().pretty()

将查询结果拆散. 更容易观看.

  • count() - db.col_name.find().count()

个数统计.

  • limit() - db.col_name.find().limit(num)

查询结果个数限制.

  • 索引相关

表默认会根据'_id'字段建立索引. 如果需要建立其他索引, 可通过如下命令.

db.col_name.createIndex({"title":1})
  • 内嵌函数体
  • $in 操作符使用
$in
The $in operator selects the documents where the valueof a field equals any >value in the specified array. To specify an$in expression, use the following >prototype:

For comparison of different BSON type values, see the specifiedBSON >comparison order.

{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }
If the field holds an array, then the $in operatorselects the documents whose field holds an array that containsat least one element that matches a value in the specified array(e.g. <value1>, <value2>, etc.)

上面这段话是摘自官方的解释,大概的意思就是说:field只要和array中的任意一个value相同,那么该文档就会被检索出来。

也就是说mongoDB中$in的功能和sql中的in是相同的。

MongoDB之$in的用法

db.user.find({hobby:{$in:["足球","篮球"]  } })
  • $or & $all
> db.user.find({$or:[{name:"mike"},{name:"jack"}]} )
{ "_id" : ObjectId("5ca7a4b0219efd687462f965"), "id" : 1, "name" : "jack", "age" : 73 }
{ "_id" : ObjectId("5ca7a4b7219efd687462f966"), "id" : 2, "name" : "mike", "age" : 84, "gender" : "男" }

> db.user.find({hobby:{$all:["足球"]  } })
{ "_id" : ObjectId("5ca7a4c4219efd687462f968"), "id" : 4, "name" : "xiaogang", "age" : 34, "hobby" : [ "羽毛球", "篮球", "足球" ] }


> db.user.find({hobby:{$all:["足球","羽毛球"]  } })
{ "_id" : ObjectId("5ca7a4c4219efd687462f968"), "id" : 4, "name" : "xiaogang", "age" : 34, "hobby" : [ "羽毛球", "篮球", "足球" ] }

> db.user.find({hobby:{$all:["足球","桌球"]  } })

MongoDB 查询$关键字 $in $or $all


Others

ObjectId 与 String类型的Id

略. 值得注意的是MongoDB内的ID为ObjectID类型. 且长度固定24位. 不足24位的ID, MongoDB会将其指定为一个String类型. 这在查询的时候有所影响, 需要特别注意.

mongodb中的objectId和字符串id之间的转换

mongodb – 将ObjectID转换为mongo聚合中的字符串

MongoDB深究之ObjectId


Schema查询

MongoDB内是不存在Schema的概念的. 但是有的时候, 我们需要对其中对表结构进行统计. 这里, MongoDB提供了Varity.js进行查询. 具体操作如下:

  • 安装过程

variety.js安装到想要安装的相关目录.
https://github.com/variety/variety

  • 操作过程
./mongo 192.168.10.1/TESTS --eval "var collection = 'TESTS ', query = {'mediaTypeId':'Atlas'} /opt/variety-master/variety.js

[2]. Variety.js


Reference

[1]. 菜鸟教程 - MongoDB 教程

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值