MongoDB简介与基本操作示例

MongoDB是一种基于分布式文件存储的数据库,由C++语言编写,旨在为Web应用提供可扩展且高性能的数据存储解决方案。它在关系数据库与非关系数据库之间架起了一座桥梁,是功能最丰富、最像关系数据库的非关系数据库之一。

MongoDB的优点

  1. 文档存储:MongoDB提供面向文档的存储,操作简单易懂,适合快速开发。
  2. 自动分片:当负载增加时,MongoDB能够将数据分布到计算机网络中的其他节点,使得系统具有良好的扩展性。
  3. 多语言支持:支持多种编程语言,如Ruby、Python、Java、C++、PHP、C#等,便于开发者使用。
  4. 镜像功能:能够通过本地或网络创建数据镜像,增强系统的扩展能力。

MongoDB的缺点

  1. 无事务支持:MongoDB不原生支持多文档事务,可能会影响某些应用场景。
  2. 缺乏多表联查:在某些复杂查询需求中,MongoDB的性能可能不如传统关系数据库。

MongoDB的优势场景

MongoDB有效解决了传统MySQL在以下方面的短板:

  1. 高并发写入:可以满足对数据库高并发写入的需求。
  2. 海量数据存储:提供高效的数据存储和访问能力,适合海量数据场景。
  3. 高可用性与扩展性:具备良好的可扩展性和高可用性,适合快速发展的业务需求。

MongoDB基本操作示例

以下是一些常见的MongoDB操作命令示例:

数据库与集合操作

// 查看磁盘上的所有数据库
show dbs;

// 创建和使用数据库
use dbstudy;

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

// 创建集合
db.createCollection('student');
db.createCollection('teacher');

// 查看当前数据库中的集合
show collections;

// 删除集合
db.teacher.drop();

数据插入与查询

// 插入数据
db.student.insert({
    sid: 16,
    sname: 'yy',
    age: 16,
    ssex: '男'
});

// 查询所有数据
db.student.find();

// 根据条件查询
db.student.find({ sname: '李四' });

数据更新与删除

// 更新数据
db.student.update(
    { sname: '李四' },
    { $set: { age: 18 } },
    { multi: true } // 更新所有匹配的文档
);

// 删除数据
db.student.remove({ age: 22 }); // 删除所有符合条件的文档

Java操作MongoDB示例

在Java中,MongoDB的操作同样简单高效。以下是一些基本示例:

连接MongoDB
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase dbstudy = mongoClient.getDatabase("dbstudy");
MongoCollection<Document> student = dbstudy.getCollection("student");
新增数据
  Teacher teacher = new Teacher();
        teacher.setTsex("女");
        teacher.setTbir("2000-8-7");
        teacher.setTage(24);
        teacher.setTname("夏目");
//        Document document = new Document();
//        document.append("tname",teacher.getTname());
//        document.append("tsex",teacher.getTsex());
//        document.append("tbir",teacher.getTbir());
//        document.append("tage",teacher.getTage());
        //创建gson对象
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
        //将java对象转化为json字符串
        String s = gson.toJson(teacher);
        //将json字符串转化为Document对象
        Document parse = Document.parse(s);
        student.insertOne(parse);
查询数据
        FindIterable<Document> findIterable = student.find();
        for(Document doc:findIterable){
            System.out.println(doc);
        }

        //条件查询
        Bson eq = Filters.eq("tname", "老杨");
        //模糊查询
        Bson regex = Filters.regex("tname", "老"); //^老 开头 老$ 结尾
        FindIterable<Document> findIterable = student.find(regex);
        for (Document doc : findIterable) {
            System.out.println(doc);
       }
        //分页
        FindIterable<Document> documents = student.find().skip((1 - 1) * 3).limit(3);
        for (Document doc : documents) {
            System.out.println(doc);
        }
        //排序
        FindIterable<Document> documents = student.find().sort(new Document("tage",1));
        for (Document doc : documents) {
            System.out.println(doc);
        }
修改数据
//        Bson b1 = Filters.eq("tname", "小小王");
        Bson bson = Filters.or(
                Filters.eq("tname", "老王"),
                Filters.eq("tname", "小王")
        );
        Document document = new Document();
        //累加
        document.append("$inc", new Document("tage", 20));
//        document.append("$set", new Document("tage", 24));

//        UpdateResult updateResult = student.updateOne(bson, document);
        UpdateResult updateResult = student.updateMany(bson, document);
        long matchedCount = updateResult.getMatchedCount();
        long modifiedCount = updateResult.getModifiedCount();
        System.out.println(matchedCount );
        System.out.println(modifiedCount );
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值