当前位置:Gxlcms > 数据库问题 > NoSQL入门)(详细)

NoSQL入门)(详细)

时间:2021-07-01 10:21:17 帮助过:21人阅读

Linux平台安装教程:https://www.runoob.com/mongodb/mongodb-linux-install.html

Mac OSX 平台安装教程:https://www.runoob.com/mongodb/mongodb-osx-install.html

 

1、环境配置

(教程网址:https://www.runoob.com/mongodb/mongodb-java.html

在 Java 程序中如果要使用 MongoDB,你需要确保已经安装了 Java 环境及 MongoDB JDBC 驱动。

 

(1)首先你必须下载mongo jar包,下载地址:https://mongodb.github.io/mongo-java-driver/, 请确保下载最新版本。

 

(2)你需要将 mongo-java-driver-3.12.0.jar (找到合适的版本)包含在你的 classpath 中。

技术图片

 

 

 

(3)国内 mongodb-driver jar 下载地址:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/

 

(4)连接数据库(java代码示例)

import com.mongodb.MongoClient;import com.mongodb.client.MongoDatabase;

public class MongoDBJDBC{

public static void main( String args[] ){

try{   

 // 连接到 mongodb 服务

 MongoClient mongoClient = new MongoClient( "localhost" , 27017 );

 // 连接到数据库

  MongoDatabase mongoDatabase = mongoClient.getDatabase("ycs");  

  System.out.println("Connect to database successfully");

   }catch(Exception e){

   System.err.println( e.getClass().getName() + ": " + e.getMessage() );

    }

    }}

 

2、MongoDB 命令

备注这里用ycs作为创建的数据库,用aaa作为集合(类似表),bbb作为文档

创建数据库:use DATABASE_NAME  #如果数据库不存在,则创建数据库,否则切换到指定数据库

例如:use ycs (>use 数据库名。创建完毕后输入 >db ,就会显示你刚刚创建的实例:ycs)

查看所有数据库:show dbs

 

插入数据:db.ycs.insert({"name":"黑小子教程"})WriteResult({ "age" : 21 })

注意:MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。

 

删除数据库:db.dropDatabase()

注意:删除当前数据库,默认为 test,你可以使用 show dbs 或者 db 命令查看当前数据库名,然后命令:use ycs 切换到你要删除的数据库,再执行命令:db.dropDatabase()进行删除。

 

创建集合:db.createCollection("aaa")  # 集合,类似数据库中的表。name: 要创建的集合名称,options:可选参数, 指定有关内存大小及索引的选项。

例如: >use ycs   >db.createCollection("aaa")     

options 参数:

capped布尔):(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。注意:当该值为 true 时,必须指定 size 参数。

autoIndexId布尔):如为 true,自动在 _id 字段创建索引。默认为 false。

Size数值):(可选)为固定集合指定一个最大值,以千字节计(KB)。如果 capped 为 true,也需要指定该字段。

Max数值):(可选)指定固定集合中包含文档的最大数量。

 

查看已有集合: show collections 或 show tables

 

删除集合:db.collection.drop()

例如: >use ycs    >show collections    >db.aaa.drop()

 

插入文档:db.COLLECTION_NAME.insert(document)   #使用 insert() 或 save() 方法向集合中插入文档

例如:>db.bbb.insert({title: ‘MongoDB 教程‘,

         description: ‘MongoDB 是一个 Nosql 数据库‘,

         by: ‘黑小子教程‘,

         url: ‘http://www.runoob.com‘,

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

         likes: 100})

 

查看已插入文档:db.bbb.find()

 

更新文档:db.collection.update( <query>,<update>,

              {

               upsert: <boolean>, multi: <boolean>, writeConcern: <document>

               })   #使用 update() 和 save() 方法来更新集合中的文档

参数说明:

query : update的查询条件,类似sql update查询内where后面的。

update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的

upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

writeConcern :可选,抛出异常的级别。

例如:(在上面插入文档示例基础上进行修改)

 

>db.bbb.update({‘title‘:‘MongoDB 教程‘},{$set:{‘title‘:‘MongoDB‘}})      #如需修改多条:则需要设置 multi 参数为 true。

例如:      >db.col.update({‘title‘:‘MongoDB 教程‘},{$set:{‘title‘:‘MongoDB‘}},{multi:true})

 

查看是否更新文档成功: find()

例如:>db.bbb.find().pretty()

 

删除文档:remove()

语法:db.bbb.remove(

     <query>,

{

     justOne: <boolean>,writeConcern: <document>

    })

列如:>db.aaa.remove({‘title‘:‘MongoDB 教程‘})

参数说明:

query :(可选)删除的文档的条件。

justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。

writeConcern :(可选)抛出异常的级别。

 

查询文档:db.collection.find(query, projection)

参数说明:

query :可选,使用查询操作符指定查询条件

projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

 

排序: sort()     #语法:>db.COLLECTION_NAME.find().sort({KEY:1})

注意:skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。

技术图片

 

 

 

指定数量的数据记录(分页):limit()   #语法: >db.COLLECTION_NAME.find().limit(NUMBER)

注意:limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。

 

跳过指定数量的数据(筛选):skip()   #语法:>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

 

创建索引:createIndex()  #语法:>db.collection.createIndex(keys, options)

注意: Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。

 

#createIndex() 方法中你也可以设置使用多个字段创建索引(关系型数据库中称作复合索引)。

语法:>db.aaa.createIndex({"title":1,"description":-1})

技术图片

 

 

聚合:aggregate()  #主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。

语法:>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

技术图片

 

 

数据备份:mongodump  

#语法:>mongodump -h dbhost -d dbname -o dbdirectory

参数说明:

-h : MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

-d : 需要备份的数据库实例,例如:ycs

-o : 备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

 

数据恢复:mongorestore  

#语法:mongorestore -h <hostname><:port> -d dbname <path>

参数说明:

--host <:port>, -h <:port>:MongoDB所在服务器地址,默认为: localhost:27017

--db , -d :需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

--drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

<path>:mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。

--dir:指定备份的目录,你不能同时指定 <path> 和 --dir 选项。

 

监控:mongostat  和 mongotop 

在你已经安装部署并允许MongoDB服务后,你必须要了解MongoDB的运行情况,并查看MongoDB的性能。这样在大流量的情况下可以很好的应对并保证MongoDB正常运作。

示例:启动你的Mongod服务,进入到你安装的MongoDB目录下的bin目录, 然后输入mongostat命令,如下所示:

D:\set up\mongodb\bin>mongostat

D:\set up\mongodb\bin>mongotop

 

MongodDB很强大,这里只诠释了它的背景和用处还有常用的一些操作,还有许多没有功能和用处没有展示出来,可以去官网了解,也根据文中提供的网址去详细了解。如果本文有不合格的地方,可以指正,三人行,必有我师!

 

 

qq:2931445528

---------------------------------------------------------END----------------------------------------------------------------

NoSQL入门)(详细)

标签:book   软件   ase   驱动   ble   可伸缩   update   ring   复制   

人气教程排行