• MongoDB的搭建、参数


    Mongodb官网:https://www.mongodb.com/

    mkdir -r  /data/db

    touch  /data/log

    tar -zxvf mongodb-linux-x86_64-rhel70-3.6.0.tgz

    mv mongodb-linux-x86_64-rhel70-3.6.0/  mongodb-3.6.0

    cd mongodb-3.6.0

    配置文件方式启动mongo

    创建配置文件

    vi mongodb.conf

    输入以下内容:

    dbpath=/data/db/                   

    logpath=/data/log

    logappend=true

    fork=true

    port=27017

    bind_ip=127.0.0.1,192.168.3.12

    启动

    ./mongod -f ./mongodb.conf

    不创建配置文件通过mongod参数启动也可以

    ./mongod –dbpath /data/db/ -logpath /data/db/log -logappend -fork –port 27017

    开通防火墙

    firewall-cmd --zone=public --add-port=27017/tcp --permanent

    systemctl restart firewalld.service

    那么如何正常关闭mongodb?先通过shell连上服务器:
    mongo
    use admin
    db.shutdownServer()
    或者直接kill -15 <pid>,注意kill -9 可能会导致数据文件损坏

    参数说明(参考使用)

    --quiet # 安静输出

    --port arg  # 指定服务端口号,默认端口27017

    --bind_ip arg   # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP

    --logpath arg   # 指定MongoDB日志文件,注意是指定文件不是目录

    --logappend # 使用追加的方式写日志

    --pidfilepath arg   # PID File 的完整路径,如果没有设置,则没有PID文件

    --keyFile arg   # 集群的私钥的完整路径,只对于Replica Set 架构有效

    --unixSocketPrefix arg  # UNIX域套接字替代目录,(默认为 /tmp)

    --fork  # 以守护进程的方式运行MongoDB,创建服务器进程

    --auth  # 启用验证

    --cpu   # 定期显示CPU的CPU利用率和iowait

    --dbpath arg    # 指定数据库路径

    --diaglog arg   # diaglog选项 0=off 1=W 2=R 3=both 7=W+some reads

    --directoryperdb    # 设置每个数据库将被保存在一个单独的目录

    --journal   # 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里

    --journalOptions arg    # 启用日志诊断选项

    --ipv6  # 启用IPv6选项

    --jsonp # 允许JSONP形式通过HTTP访问(有安全影响)

    --maxConns arg  # 最大同时连接数 默认2000

    --noauth    # 不启用验证

    --nohttpinterface   # 关闭http接口,默认关闭27018端口访问

    --noprealloc    # 禁用数据文件预分配(往往影响性能)

    --noscripting   # 禁用脚本引擎

    --notablescan   # 不允许表扫描

    --nounixsocket  # 禁用Unix套接字监听

    --nssize arg (=16)  # 设置信数据库.ns文件大小(MB)

    --objcheck  # 在收到客户数据,检查的有效性,

    --profile arg   # 档案参数 0=off 1=slow, 2=all

    --quota # 限制每个数据库的文件数,设置默认为8

    --quotaFiles arg    # number of files allower per db, requires --quota

    --rest  # 开启简单的rest API

    --repair    # 修复所有数据库run repair on all dbs

    --repairpath arg    # 修复库生成的文件的目录,默认为目录名称dbpath

    --slowms arg (=100) # value of slow for profile and console log

    --smallfiles    # 使用较小的默认文件

    --syncdelay arg (=60)   # 数据写入磁盘的时间秒数(0=never,不推荐)

    --sysinfo   # 打印一些诊断系统信息

    --upgrade   # 如果需要升级数据库

    Replicaton 参数

    --fastsync  # 从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步

    --autoresync    # 如果从库与主库同步数据差得多,自动重新同步,

    --oplogSize arg # 设置oplog的大小(MB)

    /从参数

    --master    # 主库模式

    --slave # 从库模式

    --source arg    # 从库 端口号

    --only arg  # 指定单一的数据库复制

    --slavedelay arg    # 设置从库同步主库的延迟时间

    Replica set(副本集)选项:

    --replSet arg   # 设置副本集名称

    Sharding(分片)选项

    --configsvr # 声明这是一个集群的config服务,默认端口27019,默认目录/data/configdb

    --shardsvr  # 声明这是一个集群的分片,默认端口27018

    --noMoveParanoia    # 关闭偏执为moveChunk数据保存

    基本操作:

    use DATABASE_NAME 命令来创建数据库,存在就打开 不存在就创建

    示例:use test

    show dbs 检查数据库列表(没有数据的显示不出来)

    db 检查当前选择的数据库

    db.COLLECTION_NAME.insert(document)插入一个文档,可以用数组插入多条文档,在 MongoDB 中,不需要创建集合。当插入一些文档时,MongoDB 会自动创建集合(相当于表)。

    示例:db.items.insert({"name":"yiibai tutorials"})

          db.items.insert([{"name":"xu"},{"name":"luo"},{"name":"chen"}])

    db.dropDatabase() 命令用于删除现有的数据库

    show collections  用于从数据库中查询集合

    db.COLLECTION_NAME.drop() 用于从数据库中删除集合

    示例:db.items.drop()

    db.COLLECTION_NAME.find(document) 从MongoDB集合查询数据,除了find()方法外,还有一个findOne()方法,它只返回一个文档。

    示例:db.items.find()

    db.COLLECTION_NAME.find(document).pretty() 以格式化的方式显示结果

    示例:db.items.find().pretty()

    MongoDB 与 RDBMS的等效 Where 子句

    要在一些条件的基础上查询文档,可以使用以下操作。

    操作 语法 示例 RDBMS等效语句

    相等 {<key>:<value>} db.mycol.find({"by":"yiibai"}).pretty() where by = 'yiibai'

    小于 {<key>:{$lt:<value>}} db.mycol.find({"likes":{$lt:50}}).pretty() where likes < 50

    小于等于 {<key>:{$lte:<value>}} db.mycol.find({"likes":{$lte:50}}).pretty() where likes <= 50

    大于 {<key>:{$gt:<value>}} db.mycol.find({"likes":{$gt:50}}).pretty() where likes > 50

    大于等于 {<key>:{$gte:<value>}} db.mycol.find({"likes":{$gte:50}}).pretty() where likes >= 50

    不等于 {<key>:{$ne:<value>}} db.mycol.find({"likes":{$ne:50}}).pretty() where likes != 50

    MongoDB中的AND操作符

    语法

    find()方法中,如果通过使用’,‘将它们分开传递多个键,则 MongoDB 将其视为AND条件。 以下是AND的基本语法 -

    >db.mycol.find({$and:[{key1: value1}, {key2:value2}]}).pretty()

    也可以:

    >db.mycol.find({key1: value1, key2:value2}).pretty()

    示例

    > db.mycol.find({$and:[{"by":"yiibai tutorials"},{"title": "MongoDB Overview"}]}).pretty()

    {

            "_id" : 100,

            "title" : "MongoDB Overview",

            "description" : "MongoDB is no sql database",

            "by" : "yiibai tutorials",

            "url" : "http://www.yiibai.com",

            "tags" : [

                    "mongodb",

                    "database",

                    "NoSQL"

            ],

            "likes" : 100

    }

    对于上面给出的例子,等效的SQL where子句是 -

    SELECT * FROM mycol where by ='yiibai tutorials' AND title ='MongoDB Overview'

    SQL

    可以在find子句中传递任意数量的键值。

    MongoDB中的OR操作符

    语法

    在要根据OR条件查询文档,需要使用$or关键字。 以下是OR条件的基本语法 -

    >db.mycol.find({$or: [{key1: value1}, {key2:value2}]}).pretty()

    示例

    >db.mycol.find({$or:[{"by":"yiibai tutorials"},{"title": "MongoDB Overview"}]}).pretty()

    {

       "_id": 100,

       "title": "MongoDB Overview",

       "description": "MongoDB is no sql database",

       "by": "yiibai tutorials",

       "url": "http://www.yiibai.com",

       "tags": ["mongodb", "database", "NoSQL"],

       "likes": "100"

    }

    Find()默认将显示文档的所有字段。为了限制显示的字段,需要将字段列表对应的值设置为1或0。1用于显示字段,而0用于隐藏字段。

    >db.COLLECTION_NAME.find({},{KEY:1})

    示例:

    db.mycol.find({},” title”:1,” description”:1})

    limit()方法的基本语法如下: 该方法接受一个数字类型参数,它是要显示的文档数。

    > db.COLLECTION_NAME.find().limit(NUMBER)

    sort()方法的基本语法如下,该方法接受包含字段列表及其排序顺序的文档。使用指定排序顺序1和-1。 1用于升序,而-1用于降序。

    >db.COLLECTION_NAME.find().sort({KEY:1})

    update()方法更新现有文档中的值。

    语法

    update()方法的基本语法如下 -

    > db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)

    save()方法 使用save()方法中传递的文档数据替换现有文档。

    语法

    MongoDB save()方法的基本语法如下所示:

    >db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})

    remove()方法

    MongoDB中的 remove()方法用于从集合中删除文档。 remove()方法接受两个参数。 一个是删除条件,第二个是标志:justOne。

    criteria - (可选)符合删除条件的集合将被删除。

    justOne - (可选)如果设置为true或1,则只删除一个文档。

    语法

    remove()方法的基本语法如下 -

    >db.COLLECTION_NAME.remove(DELLETION_CRITTERIA,1)

    ensureIndex()创建索引 方法的基本语法如下

    >db.COLLECTION_NAME.ensureIndex({KEY:1})

    这里的key是要在其上创建索引的字段的名称,1是升序。 要按降序创建索引,需要使用-1。

    示例

    >db.mycol.ensureIndex({"title":1})

    ensureIndex()方法中,可以传递多个字段,以在多个字段上创建索引。

    >db.mycol.ensureIndex({"title":1,"description":-1})

    ensureIndex()方法也接受选项列表(可选)。 以下是列表 -

    参数

    类型

    描述

    background

    Boolean

    在后台构建索引,以便构建索引不会阻止其他数据库活动,则指定background的值为true。默认值为false。

    unique

    Boolean

    创建一个唯一的索引,使得集合不会接受索引键或键匹配索引中现有值的文档的插入。 指定true以创建唯一索引。 默认值为false。

    name

    String

    索引的名称。如果未指定,则MongoDB通过连接索引字段的名称和排序顺序来生成索引名称。

    dropDups

    Boolean

    在可能有重复项的字段上创建唯一索引。MongoDB仅索引第一次出现的键,并从集合中删除包含该键的后续出现的所有文档。指定true以创建唯一索引。 默认值为false。

    sparse

    Boolean

    如果为true,则索引仅引用具有指定字段的文档。这些索引在某些情况下(特别是排序)使用的空间较小,但行为不同。默认值为false。

    expireAfterSeconds

    integer

    指定一个值(以秒为单位)作为TTL,以控制MongoDB在此集合中保留文档的时间。

    v

    索引版本

    索引版本号。默认索引版本取决于创建索引时运行的MongoDB的版本。

    weights

    文档

    权重是从1到99999之间的数字,并且表示该字段相对于其他索引字段在分数方面的意义。

    default_language

    String

    对于文本索引,确定停止词列表的语言以及句柄和分词器的规则。 默认值为英文。

    language_override

    String

    对于文本索引,要指定文档中包含覆盖默认语言的字段名称。默认值为language。

  • 相关阅读:
    关于Idea中右边的maven projects窗口找不到了如何调出来
    如何解决IntelliJ idea的maven工程提示的Cannot Resolve Symbol
    代码战争
    golang学习笔记----并发
    golang --学习笔记 运行时间计算
    golang ---timeb
    go ---MQTT client
    golang --strings
    Windows ----tasklist/taskkill
    转Tasklist(windows)
  • 原文地址:https://www.cnblogs.com/xuyingzhong/p/8276063.html
Copyright © 2020-2023  润新知