zoukankan      html  css  js  c++  java
  • MongDB安装使用

    4.MongoDB 下载

    MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center#community

    根据你的系统下载 32 位或 64 位的 .msi 文件,下载后双击该文件,按操作提示安装即可。

    安装过程中,你可以通过点击 "Custom(自定义)" 按钮来设置你的安装目录。

    我这里安装在E:MongoDBServer3.2 。

    创建数据目录

    MongoDB将数据目录存储在 db 目录下。但是这个数据目录不会主动创建,我们在安装完成后需要创建它。请注意,数据目录应该放在根目录下((如: C: 或者 E: 等 )。

    在本教程中,我们已经在 E盘安装了 mongodb,现在让我们创建一个 data 的目录然后在 data 目录里创建 db 目录。

    c:>cd E
    
    e:>mkdir data
    
    ce:>cd data
    
    ce:data>mkdir db
    
    ce:data>cd db
    
    ce:datadb>

    你也可以通过 window 的资源管理器中创建这些目录,而不一定通过命令行。

    命令行下运行 MongoDB 服务器

    为了从命令提示符下运行 MongoDB 服务器,你必须从 MongoDB 目录的 bin 目录中执行 mongod.exe 文件。

    mongod --dbpath E:datadb

    如果执行成功,会输出如下信息:

    2018-05-14T20:18:19.446+0800 I CONTROL  [initandlisten] MongoDB starting : pid=9548 port=27017 dbpath=E:datadb 64-bit host=DESKTOP-H6D4B3F
    2018-05-14T20:18:19.447+0800 I CONTROL  [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
    2018-05-14T20:18:19.448+0800 I CONTROL  [initandlisten] db version v3.2.20
    2018-05-14T20:18:19.452+0800 I CONTROL  [initandlisten] git version: a7a144f40b70bfe290906eb33ff2714933544af8
    2018-05-14T20:18:19.452+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2o-fips  27 Mar 2018
    2018-05-14T20:18:19.453+0800 I CONTROL  [initandlisten] allocator: tcmalloc
    2018-05-14T20:18:19.454+0800 I CONTROL  [initandlisten] modules: none
    2018-05-14T20:18:19.454+0800 I CONTROL  [initandlisten] build environment:
    2018-05-14T20:18:19.454+0800 I CONTROL  [initandlisten]     distmod: 2008plus-ssl
    2018-05-14T20:18:19.455+0800 I CONTROL  [initandlisten]     distarch: x86_64
    2018-05-14T20:18:19.455+0800 I CONTROL  [initandlisten]     target_arch: x86_64
    2018-05-14T20:18:19.456+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "E:datadb" } }
    2018-05-14T20:18:19.461+0800 I -        [initandlisten] Detected data files in E:datadb created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
    2018-05-14T20:18:19.462+0800 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=4G,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),verbose=(recovery_progress),
    2018-05-14T20:18:19.873+0800 I STORAGE  [initandlisten] WiredTiger [1526300299:873739][9548:140712150131024], txn-recover: Main recovery loop: starting at 1/11136
    2018-05-14T20:18:19.982+0800 I STORAGE  [initandlisten] WiredTiger [1526300299:982555][9548:140712150131024], txn-recover: Recovering log 1 through 2
    2018-05-14T20:18:20.099+0800 I STORAGE  [initandlisten] WiredTiger [1526300300:99093][9548:140712150131024], txn-recover: Recovering log 2 through 2
    2018-05-14T20:18:20.841+0800 I NETWORK  [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
    2018-05-14T20:18:21.070+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory 'E:/data/db/diagnostic.data'
    2018-05-14T20:18:21.072+0800 I NETWORK  [initandlisten] waiting for connections on port 27017
    2018-05-14T20:18:57.520+0800 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:57811 #1 (1 connection now open)
    2018-05-14T20:19:17.287+0800 I NETWORK  [conn1] end connection 127.0.0.1:57811 (0 connections now open)
    2018-05-14T20:22:22.345+0800 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:57914 #2 (1 connection now open)
    2018-05-14T20:22:40.307+0800 I COMMAND  [conn2] command test.runoob command: insert { insert: "runoob", documents: [ { _id: ObjectId('5af97f90218608b3c0f3320a'), x: 10.0 } ], ordered: true } ninserted:1 keyUpdates:0 writeConflicts:0 numYields:0 reslen:25 locks:{ Global: { acquireCount: { r: 2, w: 2 } }, Database: { acquireCount: { w: 1, W: 1 } }, Collection: { acquireCount: { W: 1 } } } protocol:op_command 103ms
    2018-05-14T20:26:38.734+0800 I COMMAND  [conn2] command runoob.runoob command: insert { insert: "runoob", documents: [ { _id: ObjectId('5af9807e218608b3c0f3320c'), name: "菜鸟教程" } ], ordered: true } ninserted:1 keyUpdates:0 writeConflicts:0 numYields:0 reslen:25 locks:{ Global: { acquireCount: { r: 2, w: 2 } }, Database: { acquireCount: { w: 1, W: 1 } }, Collection: { acquireCount: { W: 1 } } } protocol:op_command 244ms
    2018-05-14T20:27:09.967+0800 I COMMAND  [conn2] dropDatabase runoob starting
    2018-05-14T20:27:09.967+0800 I COMMAND  [conn2] dropDatabase runoob finished
    2018-05-14T20:30:11.173+0800 I COMMAND  [conn2] command test.myco12 command: insert { insert: "myco12", documents: [ { _id: ObjectId('5af98152218608b3c0f3320d'), name: "菜鸟教程" } ], ordered: true } ninserted:1 keyUpdates:0 writeConflicts:0 numYields:0 reslen:25 locks:{ Global: { acquireCount: { r: 2, w: 2 } }, Database: { acquireCount: { w: 1, W: 1 } }, Collection: { acquireCount: { w: 1, W: 1 } } } protocol:op_command 285ms
    2018-05-14T20:31:18.783+0800 I COMMAND  [conn2] CMD: drop test.myco12

    使用:

      1. MongoDB - 创建数据库

    > show dbs   #显示所有的数据库
    local  0.000GB
    test   0.000GB
    > use runoob  使用runoob数据库,如果不存在会自动创建
    switched to db runoob

    然而再执行show dbs发现runoob并不在数据库中

    > show dbs
    local  0.000GB
    test   0.000GB
    > use runoob
    switched to db runoob
    > show dbs
    local  0.000GB
    test   0.000GB
    >

    要显示它,我们需要向 runoob 数据库插入一些数据。

    >  db.runoob.insert({"name":"catxjd"})   #插入数据
    WriteResult({ "nInserted" : 1 })
    > show dbs
    local   0.000GB
    runoob  0.000GB
    test    0.000GB

    2. 删除数据库

    删除数据库之前需要先进入到要删除的数据库中

    > show dbs
    local   0.000GB
    runoob  0.000GB
    test    0.000GB
    > use runoob
    switched to db runoob
    > db.dropDatabase()   #删除数据库
    { "dropped" : "runoob", "ok" : 1 }
    > show dbs
    local  0.000GB
    test   0.000GB

    3. 创建集合

    MongoDB 中使用 createCollection() 方法来创建集合。

    语法格式:

    db.createCollection(name, options)

    参数说明:

    • name: 要创建的集合名称
    • options: 可选参数, 指定有关内存大小及索引的选项

    options 可以是如下参数:

    字段类型描述
    capped 布尔 (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
    当该值为 true 时,必须指定 size 参数。
    autoIndexId 布尔 (可选)如为 true,自动在 _id 字段创建索引。默认为 false。
    size 数值 (可选)为固定集合指定一个最大值(以字节计)。
    如果 capped 为 true,也需要指定该字段。
    max 数值 (可选)指定固定集合中包含文档的最大数量。

    在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。

    例如:向test数据库中插入runob集合

    > use test       #使用test数据库
    switched to db test
    > show collections   #显示所有的集合
    > db.createCollection("runob")  #创建新的集合
    { "ok" : 1 }
    > show collections   #显示所有的集合
    runob

    4. 删除集合

    MongoDB 中使用 drop() 方法来删除集合。

    语法格式:

    db.collection.drop()

    返回值

    如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false。

    > db.createCollection("runob1")  #新建一个新的集合
    { "ok" : 1 }
    > show collections  #此时有2个集合了
    runob
    runob1
    > db.runob1.drop()  #删除刚建的集合
    true
    > show collections   #看,只剩下一个了
    runob

    4. 插入文档

    MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:

    db.COLLECTION_NAME.insert(document)
    > document=({title: 'MongoDB 教程',          #定义一个变量
    ...     description: 'MongoDB 是一个 Nosql 数据库',
    ...     by: '菜鸟教程',
    ...     url: 'http://www.runoob.com',
    ...     tags: ['mongodb', 'database', 'NoSQL'],
    ...     likes: 100
    ... });
    {
            "title" : "MongoDB 教程",
            "description" : "MongoDB 是一个 Nosql 数据库",
            "by" : "菜鸟教程",
            "url" : "http://www.runoob.com",
            "tags" : [
                    "mongodb",
                    "database",
                    "NoSQL"
            ],
            "likes" : 100
    }
    > db.col.insert(document)  #插入
    WriteResult({ "nInserted" : 1 })
    > db.col.find()
    { "_id" : ObjectId("5af98b28218608b3c0f33210"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
    >

    5. MongoDB 更新文档

    MongoDB 使用 update()save() 方法来更新集合中的文档。接下来让我们详细来看下两个函数的应用及其区别。

    update() 方法

    update() 方法用于更新已存在的文档。语法格式如下:

    db.collection.update(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>
       }
    )

    参数说明:

    • query : update的查询条件,类似sql update查询内where后面的。
    • update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
    • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    • writeConcern :可选,抛出异常的级别。

    参考:www.runoob.com/mongodb

  • 相关阅读:
    SQL Server 日期和时间函数
    sql日期格式化函数
    C#中事件的使用
    CSS中的display:inline-block
    用aspnet_regiis注册Framework4.0框架
    什么是CSS hack
    第一次MySQL的SQL注入实验
    (二分)Block Towers(cf626)
    (多线程dp)Matrix (hdu 2686)
    (数位dp)Bomb (hdu 3555)
  • 原文地址:https://www.cnblogs.com/catxjd/p/9038199.html
Copyright © 2011-2022 走看看