参考资料为:

教材代码-林子雨编著《大数据基础编程、实验和案例教程(第2版)》教材所有章节代码_厦大数据库实验室博客

1.实验学时

4学时

2.实验目的

  • 熟悉Redis系统的安装和应用
  • 熟悉MongoDB的安装和使用
  • 掌握MongoDB编程实践

3.实验内容

(一)完成Redis的安装和使用。完成数据库的插入,删除,以及查询。

先下载到对应的文件夹:

文件夹改名:

文件夹权限赋予:

输入命令安装redis

安装成功。

打开redis服务器:

建立新终端然后输入命令进入redis客户端:

使用键值对:

创建三个表:

开始插入数据:

成功插入数据“算法”

修改数据:这里中文识别有点问题

成功修改为“编译原理”

删除数据:

这里中文显示有问题。

成功删除刚刚设置的“编译原理名字”

这里的数据库编译方式是:表名字:行名字:列名字

(二)MongoDB的安装和使用。完成MongoDB的基本的shell命令。

使用软件源安装MongoDB

查找下载对应软件包

创建MongoDB文件列表

安装MongoDB

安装成功。

启动MongoDB成功

开始使用shell命令:

常见命令:

展现数据库、使用数据库、创建集合

切换数据库(school)

插入数据:

如果是save,_id相同,则会更新数据。insert会插入数据

查找数据:

一般来说,查找数据的格式为db.yourCollection.find(criteria,filterDisplay);

如果查询条件为空,可以使用{}作为占位符

查询所有记录:

查询指定记录(数据)

查询指定列、sname、sage数据

and条件查询:

or条件查询

修改数据:

删除数据:

删除集合:

(三)使用Java API对MongoDB进行访问。

传输文件之后,打开eclipse:

将下载之后的jar包导入并且创建工程之后,在新建立的工程之下创建MongoDBExample.java文件

然后接入代码:下面为java代码

import java.util.ArrayList;
import java.util.List; 
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters; 
public class TestMongoDB {
    /**
     * @param args
     */
    public static void main(String[] args) {
//      insert();//插入数据。执行插入时,可将其他三句函数调用语句注释,下同
        find(); //查找数据
//      update();//更新数据
//      delete();//删除数据
    }
    /**
     * 返回指定数据库中的指定集合
     * @param dbname 数据库名
     * @param collectionname 集合名
     * @return
     */
    //MongoDB无需预定义数据库和集合,在使用的时候会自动创建
    public static MongoCollection<Document> getCollection(String dbname,String collectionname){
        //实例化一个mongo客户端,服务器地址:localhost(本地),端口号:27017
        MongoClient  mongoClient=new MongoClient("localhost",27017);
        //实例化一个mongo数据库
        MongoDatabase mongoDatabase = mongoClient.getDatabase(dbname);
        //获取数据库中某个集合
        MongoCollection<Document> collection = mongoDatabase.getCollection(collectionname);
        return collection;
    }
    /**
     * 插入数据
     */
    public static void insert(){
        try{
            //连接MongoDB,指定连接数据库名,指定连接表名。
            MongoCollection<Document> collection= getCollection("School","student");    //数据库名:School 集合名:student
            //实例化一个文档,文档内容为{sname:'Mary',sage:25},如果还有其他字段,可以继续追加append
            Document doc1=new Document("sname","Mary").append("sage", 25);
            //实例化一个文档,文档内容为{sname:'Bob',sage:20}
            Document doc2=new Document("sname","Bob").append("sage", 20);
            List<Document> documents = new ArrayList<Document>(); 
            //将doc1、doc2加入到documents列表中
            documents.add(doc1); 
            documents.add(doc2); 
            //将documents插入集合
            collection.insertMany(documents);  
            System.out.println("插入成功"); 
        }catch(Exception e){
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );
        }
    }
    /**
     * 查询数据
     */
    public static void find(){
        try{
            MongoCollection<Document> collection = getCollection("School","student");  //数据库名:School 集合名:student
            //通过游标遍历检索出的文档集合 
//          MongoCursor<Document>  cursor= collection.find(new Document("sname","Mary")). projection(new Document("sname",1).append("sage",1).append("_id", 0)).iterator();   //find查询条件:sname='Mary'。projection筛选:显示sname和sage,不显示_id(_id默认会显示)
            //查询所有数据
            MongoCursor<Document>  cursor= collection.find().iterator();
            while(cursor.hasNext()){
                System.out.println(cursor.next().toJson());
            }
        }catch(Exception e){
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );
        }
    }
    /**
     * 更新数据
     */
    public static void update(){
        try{
            MongoCollection<Document> collection = getCollection("School","student");  //数据库名:School 集合名:student
             //更新文档,将文档中sname='Mary'的文档修改为sage=22   
             collection.updateMany(Filters.eq("sname", "Mary"), new Document("$set",new Document("sage",22)));  
             System.out.println("更新成功!");
        }catch(Exception e){
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );
        }
    }
    /**
     * 删除数据
     */
    public static void delete(){
        try{
            MongoCollection<Document> collection = getCollection("School","student");  //数据库名:School 集合名:student
                //删除符合条件的第一个文档  
            collection.deleteOne(Filters.eq("sname", "Bob"));  
            //删除所有符合条件的文档  
            //collection.deleteMany (Filters.eq("sname", "Bob"));
            System.out.println("删除成功!");
        }catch(Exception e){
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );
        }
    }
}

得到结果:

4.思考题

(一)Redis和传统的Mysql数据库的区别在哪里?

1.mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。

2.redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限

(二)MongoDB有哪些特点,和Mysql数据库的区别在哪里?

MongoDB是非关系型数据库(nosql ),属于文档型数据库。文档是MongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。

MongoDB是非关系型数据库,而Mysql是关系型数据库。

MongoDB存储方式是内存虚拟+持久化,Mysql有不同的引擎对应着不同的存储方式。

MongoDB的成熟度比较低,,但是Mysql数据库的成熟度比较高。

MongoDB的优势在于他的速度、高拓展性、存储形式。Mysql优势在于他的广泛程度,成熟的体系。

5.实验结论或体会

1.使用redis数据库的时候,需要注意键值对的选择,注意,使用中文的时候可能会导致发生数据错误。

2.使用MongoDB的时候,注意对应的版本号,切换集合的时候,需要注意集合是否存在。

3.eclipse中编写java程序的时候,需要注意jar包的导入。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐