• win7 安装 MongoDB 及简单操作


    下载地址
    http://dl.mongodb.org/dl/win32/x86_64
    这里用的版本是
    mongodb-win32-x86_64-v3.4-latest-signed.msi
    
    
    同时下载 mongodb-compass 下载地址
    https://www.mongodb.com/products/compass
    这里用到版本是
    mongodb-compass-1.12.4-win32-x64.exe
    mongodb-compass安装一路next,直至安装完成
    
    
    MongoDB安装,选择Custom
    安装目录选择
    D:ApacheServerMongoDB
    
    
    安装完成后
    要手动创建数据目录
    在安装目录下创建data文件夹,这里是
    D:ApacheServerMongoDBdata
    
    
    进入到安装目录
    d:
    cd ApacheServer/MongoDB/bin
    
    
    
    启动MongoDB有两种方法
    第一种直接在命令行中启动,如下
    运行 MongoDB 并关联数据目录,执行成功后显示一长串信息
    mongod --dbpath D:ApacheServerMongoDBdata
    
    
    
    第二种办法将MongoDB注册到服务中,在命令行中使用 net start MongoDB 或 net stop MongoDB 即可控制启动停止服务
    在 D:ApacheServerMongoDB 下创建文件mongod.cfg
    并在其中设置内容
    //===============================以下代码为mongod.cfg文件中内容==========================================
    systemLog:
      destination: file
      path: D:ApacheServerMongoDBmongod.log
    storage:
      dbPath: D:ApacheServerMongoDBdata
    //===============================以上代码为mongod.cfg文件中内容==========================================
    
    然后在命令行中输入
    mongod.exe --config "D:ApacheServerMongoDBmongod.cfg" --install
    
    启用MongoDB
    net start MongoDB
    
    如需要移除MongoDB服务执行
    mongod.exe --remove
    
    
    
    
    
    
    
    
    
    启动MongoDB后即可打开MongoDB Compass
    输入localhost,端口号默认27017即可,刚创建的MongoDB没有用户名密码
    
    
    
    
    
    MongoDB 里一维数组(文档)都是要指定属于哪个表(集合)的,一个一维数组就是一条表数据,而数组里的键值(字段名)可随意添加删减,相当于所属表就自动添加删除该字段
    当该表下所有的数组都删除了某字段,则相当该表也没了该字段
    MongoDB在表里添加一条新数组(文档)时,会自动在数组中添加 _id 字段并设置为主键
    MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
    需要注意的是:
    1.文档中的键/值对是有序的。
    2.文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
    3.MongoDB区分类型和大小写。
    4.MongoDB的文档不能有重复的键。
    5.文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
    
    
    
    
    
    
    
    
    
    MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。
    如果需要进入MongoDB Shell后台管理,需要先打开mongodb装目录的下的bin目录,然后执行mongo.exe文件,这里是
    D:ApacheServerMongoDBinmongo.exe
    鼠标双击打开即可
    进入mongoDB后台后,会默认链接到 test 数据库:
    
    在 MongoDB Shell 中直接输入 db 回车,查看当前操作的数据库
    db
    显示
    test
    
    
    
    
    
    
    
    show dbs 命令可以显示所有数据的列表,输入
    show dbs
    显示
    admin  0.000GB
    local  0.000GB
    test   0.000GB
    
    
    
    
    
    
    
    use 数据库名 : 如果数据库不存在,则创建数据库,否则切换到指定数据库。刚创建的库用 show dbs 查看不会显示,需要往库中插入数据后才显示
    有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。
    admin  : 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
    local  : 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
    config : 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
    输入
    use local
    显示
    switched to db local
    
    
    
    
    
    
    
    
    删除当前数据库,删除后用db查看当前数据库名不变,但是输入show dbs显示的数据库列表中已没有当前库
    db.dropDatabase()
    
    
    
    
    
    
    
    
    查看当前库的集合(数据表)列表
    show tables
    或
    show collections
    
    
    
    
    
    
    
    创建集合(表)
    MongoDB 中,其实不需要创建集合。当向某个新集合插入文档时,如果该集合不存在 MongoDB 会自动创建集合
    创建集合语法
    db.createCollection(tablename, {options:value})
    参数说明:
    tablename : 要创建的集合名称
    options   : 可选参数, 指定有关内存大小及索引的选项
    
    options 可以是如下参数:
    capped      : 布尔(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档(条记录)。默认为 false。当该值为 true 时,必须指定 size 参数。
    autoIndexId : 布尔(可选)如为 true,自动在 _id 字段创建索引,默认为 false。如果建表时添加该选项创建成功后会有提示,该参数在将来版本中会取消。
    size        : 数值(可选)为固定集合指定一个最大值(以字节计)。如果 capped 为 true,也需要指定该字段。
    max         : 数值(可选)指定固定集合中包含文档的最大数量。
    例创建testtable表,输入
    db.createCollection("testtable")
    或者带参数的输入
    db.createCollection("testtable",{capped:true,autoIndexId:true,size:6142800,max:10000})
    
    
    
    
    
    
    
    删除集合(表)
    这里删除 testtable 集合(表)
    db.testtable.drop()
    
    
    
    
    
    
    
    
    
    插入一些简单的记录
    向 testtable 表插入 title、tags、likes字段的值
    testtable 表和 title 等字段如不存在会被自动创建
    方法一,直接输入
    db.testtable.insert({title:'MongoDB',tags:['mongodb','database','NoSQL'],likes:100})
    显示
    WriteResult({ "nInserted" : 1 })
    方法二,或者将要插入的值保存到一个变量中,再将该变量插入到表中
    例,将值保存到 testvar 变量中
    testvar=({title:'MongoDB',tags:['mongodb','database','NoSQL'],likes:100})
    再将该变量插入到表中
    db.testtable.insert(testvar)
    显示
    WriteResult({ "nInserted" : 1 })
    执行插入时可将返回值赋给一个变量,命令行里输入该变量将打印出返回信息,插入单条或多条记录时均可
    例
    var resualt = db.testtable.insert({title:'MongoDB',tags:['mongodb','database','NoSQL'],likes:100})
    再输出
    resualt
    显示
    WriteResult({ "nInserted" : 1 })
    
    
    
    
    
    
    
    
    
    
    一次插入多条数据
    db.testtable.insert([{testfield:'testval1'},{testfield:'testval2'}])
    或
    testvar=([{testfield:'testval1'},{testfield:'testval2'}])
    db.testtable.insert(testvar)
    
    
    
    
    
    
    
    
    
    
    更新文档
    这里需要注意的是,固定集合中文档的大小不能改变,否则更新会报错
    语法格式如下:
    db.tablename.update( where, update, {options:value})
    参数说明:
    where  : update 的查询条件,类似sql 的 where 条件。
    update : update 的对象和一些更新的操作符(如$set,$inc...)等,也可以理解为sql update查询内set后面的
    
    options 可以是如下参数:
    upsert       : 可选,这个参数的意思是,如果不存在update的记录,是否插入新记录,true为插入,默认是false,不插入。
    multi        : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    writeConcern : 可选,抛出异常的级别。
    例
    db.testtable.update({'testfield':'testval1'},{$set:{'testfield':'testval13'}})
    
    
    
    
    
    
    
    
    
    
    替换文档
    语法格式如下:
    db.tablename.save(document, {options:value})
    参数说明:
    document : 文档数据。
    
    options 可以是如下参数:
    writeConcern : 可选,抛出异常的级别。
    例,将表中 _id 为 5ab48f66d4226cbbff985283 的记录整条替换为新的记录,之前记录的一切字段作废被替换新的内容
    db.testtable.save({'_id':ObjectId('5ab48f66d4226cbbff985283'),'title':'MongoDB_test'})
    
    
    
    
    
    
    
    
    
    
    
    
    删除文档
    方法一
    语法格式如下
    db.tablename.remove(where, justOne)
    参数说明:
    where   : 可选 删除的文档的条件。
    justOne : 可选 如果设为 true 或 1,则只删除一个文档。默认 false 符合条件的全删。
    例
    db.testtable.remove({'title':'MongoDB_test'})
    删除一条数据
    db.testtable.remove({'title':'MongoDB_test'},1)
    删除全部数据
    db.testtable.remove({})
    方法二
    语法格式如下
    删除一条
    db.tablename.deleteOne(where)
    或
    删除多条
    db.tablename.deleteMany(where)
    例
    db.testtable.deleteOne({'title':'MongoDB_test'})
    或
    db.testtable.deleteMany({'title':'MongoDB_test'})
    
    
    
    
    
    
    
    
    
    
    
    查询表内文档
    db.tablename.find(where, {fieldname : val})
    参数说明:
    where     : 可选,使用查询操作符指定查询条件,不加条件则查询获取整个表内所有文档(条数据)
    fieldname : 可选,fieldname 为文档中键值名,表示返回显示或不显示指定的键,val 值为1或0。若不加 fieldname 参数则查询时返回文档中所有键值(默认省略fieldname参数)。
    如有多个 fieldname 参数则其 val 值必须都一样,全是1则只返回显示指定的 fieldname 键值,全是0则返回结果隐藏指定的 fieldname 键值
    
    pretty() 方法以格式化的方式来显示查询文档。
    db.tablename.find(where, projection).pretty()
    
    只返回一个文档,显示内容会自动格式化,不用加 pretty()。
    db.tablename.findOne(where, projection)
    
    where 查询条件
    等于         -- fieldname : value
    小于         -- fieldname : {$lt : value}
    小于等于  -- fieldname : {$lte : value}
    大于         -- fieldname : {$gt : value}
    大于等于 -- fieldname : {$gte : value}
    不等于     -- fieldname : {$ne : value}
    例查询 testtable 表
    and条件 相当于 where testfield = 'testval1' and testfield2 = 'testval11'
    db.testtable.find({testfield:'testval1',testfield2:'testval11'})
    or条件 相当于 where testfield = 'testval1' or testfield2 = 'testval22'
    db.testtable.find({$or:[{testfield:'testval1'},{testfield2:'testval22'}]})
    and和or联合使 用相当于 where testfield3 > 100 and (testfield = 'testval1' or testfield2 = 'testval22')
    db.testtable.find({testfield3:{$gt:100}, $or:[{testfield:"testval1"}, {testfield2:"testval22"}]})
    
    
    
    
    
    
    
    
    
    
    
    
    返回结果条数限制
    db.tablename.find().skip(int).limit(int)
    skip  接受一个数字参数,为返回结果中,跳过指定的条数再显示
    limit 接受一个数字参数,为返回结果中,限制显示的条数
    例
    显示除第一条以下的数据
    db.testtable.find().skip(1)
    只显示第一条数据
    db.testtable.find().limit(1)
    只显示第二条数据
    db.testtable.find().skip(1).limit(1)
    
    
    
    
    
    
    
    
    
    返回结果排序
    db.tablename.find().sort({fieldname : val})
    参数说明:
    fieldname : 指定要排序的键值名
    val       : 值为 1 升序排列或 -1 降序排列。
    skip(),limilt(),sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。
    例
    db.testtable.find().sort({testfield3 : 1})
    
    
    
    
    
    
    
    
    
    
    
    MongoDB 常用的几种数据类型
    
    String             : 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
    Integer            : 整型数值。用于存储数值。根据所采用的服务器,可分为 32 位或 64 位。
    Boolean            : 布尔值。用于存储布尔值(真/假)。
    Double             : 双精度浮点值。用于存储浮点值。
    Min/Max keys       : 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
    Array              : 用于将数组或列表或多个值存储为一个键。
    Timestamp          : 时间戳。记录文档修改或添加的具体时间。
    Object             : 用于内嵌文档。
    Null               : 用于创建空值。
    Symbol             : 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
    Date               : 日期时间。用 UNIX 时间格式来存储当前日期或时间。可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
    Object ID          : 对象 ID。用于创建文档的 ID。
    Binary Data        : 二进制数据。用于存储二进制数据。
    Code               : 代码类型。用于在文档中存储 JavaScript 代码。
    Regular expression : 正则表达式类型。用于存储正则表达式。
    
    
    writeConcern 抛出异常的级别
    NONE          : 没有异常抛出。
    NORMAL        : 仅抛出网络错误异常,没有服务器错误异常。
    SAFE          : 抛出网络错误异常、服务器错误异常;并等待服务器完成写操作。
    MAJORITY      : 抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作。
    FSYNC_SAFE    : 抛出网络错误异常、服务器错误异常;写操作等待服务器将数据刷新到磁盘。
    JOURNAL_SAFE  : 抛出网络错误异常、服务器错误异常;写操作等待服务器提交到磁盘的日志文件。
    REPLICAS_SAFE : 抛出网络错误异常、服务器错误异常;等待至少2台服务器完成写操作。
  • 相关阅读:
    判断是否声明了某个特性
    如何月份英文缩写字符串转日期
    要捕捉System.Exception异常吗
    jenkins发布到nuget
    C# – Record, Class, Struct
    Google Maps Embed API & JavaScript API
    图片综合知识
    ASP.NET Core – ADO.NET
    CSS – 管理
    JavaScript Library – PhotoSwipe
  • 原文地址:https://www.cnblogs.com/dreamhome/p/8635681.html
Copyright © 2020-2023  润新知