文章目录
  1. 1. windows下安装mongodb
  2. 2. mongodb部分命令
  • Mac OSX 下安装MongoDB
    1. 1. 以下内容为我自己安装流程记录已确保能正常使用
  • Mac OSX 下设置环境变量
  • Mac OSX 下设置MongoDB的开机启动
  • windows下安装mongodb

    下载exe文件并安装
    创建数据库文件的存放位置,比如f:/mongodb/data/db
    启动mongodb服务之前需要必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功。

    进入mongodb安装文件的bin目录(默认:C:\Program Files\MongoDB\Server\3.0\bin),
    输入如下的命令设置mongoDB的dbpath:

    1
    mongod --dbpath f:\mongodb\data\db

    打开http://localhost:27017查看是否启动成功

    为了以后不用每次都添加--dbpath参数,需做如下设置
    f:\mongodb新建文件mongo.config并填写内容如下

    1
    2
    dbpath=f:\mongodb\data\db
    logpath=f:\mongodb\log\mongo.log

    进入mongodb安装文件的bin目录,输入如下的命令添加mongodb配置:

    1
    mongod --config F:\mongodb\mongo.config

    如果发现新生成日志文件则表示配置成功。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    //安装windows服务
    mongod --config f:\mongodb\mongo.config -install -serviceName "MongoDB"

    //在win10上安装出现如下错误提示 log里看到的(服务安装却不显示成功)
    2017-03-02T11:41:12.460+0800 I CONTROL [main] Trying to install Windows service 'MongoDB'
    2017-03-02T11:41:12.460+0800 I CONTROL [main] Error connecting to the Service Control Manager: 拒绝访问。 (5)
    //解决办法
    //是因为你在cmd下没有权限所致
    //以管理员身份(win+x,然后A键)启动cmd以后
    //再执行你原来的命令就没问题了。

    //进入mongoDB shell
    cd C:\Program Files\MongoDB\Server\3.0\bin
    mongo
    //也可以将mongo所在路径加入环境变量path中,
    //之后就可以直接在cmd里输入mongo进而打开mongo shell

    2017-03-02T11:41:12.460+0800 I CONTROL [main] Trying to install Windows service ‘MongoDB’
    2017-03-02T11:41:12.460+0800 I CONTROL [main] Error connecting to the Service Control Manager: 拒绝访问。 (5)

    mongoDB使用手册

    mongodb部分命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    //启用mongo shell
    mongo
    //连接远程mongo shell
    mongo 192.168.1.100

    //显示数据库
    show dbs

    //切换数据库
    use dbname

    //删除数据库
    db.dropDatabase()

    //显示当前正在使用的数据库
    db
    //显示当前数据库下面的所有集合(数据库里的数据表)
    show collections
    //导出test数据库到data/backup文件夹下
    mongodump -d test -o data/backup
    //在要恢复的文件夹的父级目录里使用如下命令
    mongorestore data/backup

    //Use mongoexport to export the data: 导出test数据库下面的traffic表到traffic.json文件
    mongoexport --db test --collection traffic --out traffic.json

    mongoimport --db users --collection contacts --file contacts.json
    mongoimport -d test -c cuxiao --type csv --headerline --file C:\Users\zyx\Desktop\2017-04-06.csv
    // mac上更改文件编码由GBK转到UTF-8
    iconv -f GBK -t UTF-8 /Users/zyx/Downloads/2017-10-05.csv > /Users/zyx/Downloads/2017-10-05_utf8.csv
    mongoimport -d test -c cuxiao --type csv --headerline --file /Users/zyx/Downloads/2017-10-05_utf8.csv
    db.cuxiao.find({"商品名称":/婴幼儿+|衣服+/},{"商品名称":1,"商品详情页链接地址":1}).limit(5).pretty()

    //插入记录
    db.collectionName.insert({"userName":"zs0","birthday":"1999-09-09","passWord":"123456","gender":0});
    //返回结果入下
    //WriteResult({ "nInserted" : 1 })

    //插入一条记录 New in version 3.2
    db.collectionName.insertOne({"userName":"zs10","birthday":"1999-09-09","passWord":"123456","gender":0});
    // 返回结果如下
    {
    "acknowledged" : true,
    "insertedId" : ObjectId("57e8ef4a0a3c3720c7a9650d")
    }

    //插入多条记录 New in version 3.2
    db.collectionName.insertMany([
    {"userName":"zs3","birthday":"1999-09-09","passWord":"123456","gender":0},
    {"userName":"zs1","birthday":"1999-09-09","passWord":"123456","gender":0},
    {"userName":"zs2","birthday":"1999-09-09","passWord":"123456","gender":0}]
    );
    //返回值如下
    {
    "acknowledged" : true,
    "insertedIds" : [
    ObjectId("57e8ef810a3c3720c7a9650e"),
    ObjectId("57e8ef810a3c3720c7a9650f"),
    ObjectId("57e8ef810a3c3720c7a96510")
    ]
    }


    //查找全部数据
    db.collectionName.find();
    //查找全部数据但显示前两条
    db.collectionName.find().limit(2);
    //查看查询结果数量
    db.collectionName.find().count();
    //美化查询结果
    db.collectionName.find().pretty();
    //只显示需要列(_id默认显示,如果不需要显示必须显式阻止) 类似于命令 select username, email from users
    db.collectionName.find({}, {"username" : 1, "email" : 1, "_id" : 0})
    //单属性匹配
    db.collectionName.find({"name":"zs"});
    db.collectionName.find({"user.name":"zs"});
    //多属性同时匹配
    db.collectionName.find({"age":20,"name":"zs"});
    //时间段查询
    var start = new Date(2017, 3, 1);
    var end = new Date(2017, 4, 7);
    db.cuxiao.find({created_on: {$gte: start, $lt: end}});
    //正则表达式匹配 find name startwith "z" and endWith "s"
    db.collectionName.find({"name":/^z/},{"name":/s$/});
    //正则表达式匹配 find name 包含BD字符串
    db.collectionName.find({"name":/BD+/});
    //where条件匹配
    db.collectionName.find({$where:function(){return this.name="zs"}});
    //find age<23 gl:less than
    db.collectionName.find({"age":{$lt:23}});
    //find age>23 gt:greater than
    db.collectionName.find({"age":{$gt:23}});
    //find name="zs" || age=20
    db.collectionName.find({$or:[{"age":20},{"name":"zs"}]});
    //find age in (10,20,22)
    db.collectionName.find({"age":{$in:[10,20,22]}});
    //find age not in (10,20,22)
    db.collectionName.find({"age":{$nin:[10,20,22]}});


    //修改name=zs为new_ZS 年龄为40
    db.person.update({"name":"zs"},{"name":"new_ZS","age":40});
    //年龄增加20
    db.person.update({"name":"zs"},{$inc:{"age":20}});
    //年龄设置为33
    db.person.update({"name":"zs"},{$set:{"age":33}});
    //第三个参数true,表示更新条件找不到时增加一条记录
    db.person.update({"name":"szs"},{$set:{"age":33}},true);
    //第四个参数表示更新全部数据
    db.person.update({"name":"zs"},{$inc:{"age":20}},true,true);
    //对表中所有数据增加birthday列并设置其默认值
    db.person.update({},{$set:{"birthday":"1991-01-01"}},true,true);
    //修改字段类型
    db.cuxiao.find({"商品id":528438367552}).forEach(function(x) {
    x.优惠券结束时间 = new Date(x.优惠券结束时间);
    x.优惠券开始时间 = new Date(x.优惠券开始时间);
    db.cuxiao.save(x);
    })
    //修改列名
    db.alipay.update({}, {$rename : {"金额(元)" : "金额"}}, false, true)



    //删除某集合下`name`字段值为`new_ZS`的记录
    db.collectionName.remove({"name":"new_ZS"});
    //删除某集合下的全部数据(清空表)
    db.collectionName.remove({});
    //删除某集合下某字段(eg:userName)不存在的记录
    db.collectionName.remove( { "userName": { $exists: false } } )
    //删除某集合(删除某表)
    db.collectionName.drop();
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18

    //统计年龄为20的记录条数
    db.person.count({"age":20});
    //name不重复的记录
    db.person.distinct("name");
    //name不重复的记录条数
    db.cuxiao.distinct("id").length
    //name字段升序排列
    db.person.ensureIndex({"name":1})
    db.person.ensureIndex({"name":1},{"unique":true});
    //非空唯一 可以为空
    db.person.ensureIndex({"name":1},{"unique":true,"sparse":true});
    db.person.find({"name":"ns"}).explain();
    db.person.ensureIndex({"name":1,"age":1});
    //获取该集合的索引
    db.person.getIndexes();
    // 要删除的索引名字需通过查看得到
    db.person.dropIndexes("name_1");

    Mac OSX 下安装MongoDB

    以下内容为我自己安装流程记录已确保能正常使用

    根目录指的是zyxdeMacBook-Pro:/ zyx$ 这里显示的是一个/
    而用户根目录是zyxdeMacBook-Pro:~ zyx$这里显示的是一个~

    1.把从官网上下的文件,型如:mongodb-osx-x86_64-3.4.0 解压到根目录(非用户根目录)文件夹
    2.在根目录下(非用户根目录)新建mongodb文件夹,新建db文件夹(存放数据)mongodb/data/db
    3.sudo chown -R /mongodb 设置权限
    4.新建文件mongodb/etc/mongod.conf和mongodb/etc/mongod.log
    5.进入到bin目录,使用mongod --config /mongodb/etc/mongod.conf 设置mongod 配置。
    6.如果看到waiting for connections on port 27017
    7.可以打开浏览器输入:localhost:27017,如果看到It looks like you are trying to access MongoDB over HTTP on the native
    driver port 说明连接成功了。
    8.点击终端 Commond+N 打开一个新的终端 cd 到bin目录 ./mongo 便可连接到数据库进行操作

    mongod.conf 文件内容如下:

    1
    2
    3
    4
    #mongodb config file
    dbpath=/mongodb/data/db
    logpath=/mongodb/etc/mongod.log
    logappend = true

    Mac OSX 下设置环境变量

    1.打开 应用程序 -> 实用工具 -> 终端;
    2.在终端中定位到自己用户的主目录,输入: cd ~
    3.创建一个空文件,输入:touch .bash_profile
    4.编辑这个文件,输入:open .bash_profile
    5.在这个文件中输入:export PATH=${PATH}:<文件目录>;(将”<文件目录>”替换成自己想要的目录)
    例如:export PATH=${PATH}:mongodb-osx-x86_64-2.6.1/bin(我把下载后的文件直接放到了根目录);
    6.如果需要添加其他的环境变量例如JAVA_HOME,可以输入:export JAVA_HOME=/Library/Java/Home
    7.source .bash_profile重启终端,测试,这个时候就可以在用户主目录使用上面配置过的配置文件进行设置mongod --config /mongodb/etc/mongod.conf 来启动数据库了,点击终端Commond+N打开一个新的终端,使用mongo命令来连接数据库,对数据库进行操作,比如:show dbs 显示所有的集合

    Mac OSX 下设置MongoDB的开机启动

    Mac 下用于初始化系统环境的关键经常是 launchd,它是内核转载成功后启动的第一个进程。
    所以设置服务的开机启动要用到这个进程。采用 launchd 开机启动 需要配置一个plist文件。

    开机启动分为两种:
    1、在用户登陆前启动;( plist文件放置在目录:~/Library/LaunchDaemons ) ==我选的是这个 ==
    2、在用户登陆后启动。( plist文件放置在目录:~/Library/LaunchAgents )

    如 MongoDB 的开机启动,需要在 LaunchDaemons 或 LaunchAgents 创建一个 plist文件。
    如 org.mongodb.mongod.plist 内容如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <plist version="1.0">
    <plist version="1.0">
    <dict>
    <key>Label</key>
    <string>org.mongodb.mongod</string>
    <key>ProgramArguments</key>
    <array>
    <string>/mongodb-osx-x86_64-3.4.0/bin/mongod</string>
    <string>-f</string>
    <string>/mongodb/etc/mongod.conf</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
    <key>WorkingDirectory</key>
    <string>/mongodb-osx-x86_64-3.4.0</string>
    <key>StandardErrorPath</key>
    <string>/mongodb/etc/error.log</string>
    <key>StandardOutPath</key>
    <string>/mongodb/etc/output.log</string>
    <key>HardResourceLimits</key>
    <dict>
    <key>NumberOfFiles</key>
    <integer>1024</integer>
    </dict>
    <key>SoftResourceLimits</key>
    <dict>
    <key>NumberOfFiles</key>
    <integer>1024</integer>
    </dict>
    </dict>
    </plist>

    注意:以上的几个目录需要自己按自己的安装路径设置
    plist 文件创建好后 根据自己设置执行如下命令加载到 开机启动中:

    1
    2
    3
    4
    //如果没有这个授权命令会给出如下错误提示 
    // /Library/LaunchDaemons/org.mongodb.mongod.plist: Path had bad ownership/permissions
    sudo chown root /Library/LaunchDaemons/org.mongodb.mongod.plist
    sudo launchctl load /Library/LaunchDaemons/org.mongodb.mongod.plist

    或者

    1
    sudo launchctl load /Library/LaunchAgents/org.mongodb.mongod.plist

    命令执行后 mongodb 将会马上启动,下次也会随开机而启动。
    可通过http://127.0.0.1:27017查看是否启动成功。

    service mongod start
    启动服务后可以使用mongo启动shell
    如何加权限给使用mongo启动不了shell 需要认证后才能进去?

    文章目录
    1. 1. windows下安装mongodb
    2. 2. mongodb部分命令
  • Mac OSX 下安装MongoDB
    1. 1. 以下内容为我自己安装流程记录已确保能正常使用
  • Mac OSX 下设置环境变量
  • Mac OSX 下设置MongoDB的开机启动