MongoDB简单了解

java 分享会

分享人:李宁虎

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

主要特性:

面向集合存储,易于存储对象类型的数据 模式自由 支持动态查询 支持完全索引,包含内部对象 支持复制和故障恢复 使用高效的二进制数据存储,包括大型对象 文件存储格式为BSON(一种JSON的扩展)

2.知识剖析

文档(document)是MongoDB中数据的基本单元,非常类似于关系型数据库系统中的行(但是比行要复杂的多) 集合(collection)就是一组文档,如果说MongoDB中的文档类似于关系型数据库中的行,那么集合就如同表 MongoDB的单个计算机可以容纳多个独立的数据库,每一个数据库都有自己的集合和权限 MongoDB自带简洁但功能强大的JavaScript shell,这个工具对于管理MongoDB实例和操作数据作用非常大 每一个文档都有一个特殊的键"_id",它在文档所处的集合中是唯一的,相当于关系数据库中的表的主键

基本的命令:

  • 1.创建数据库:use mydb1
  • 2.删除当前数据库:db.dropDatabase()
  • 3.查看所有数据库:show dbs
  • 4.查看当前的数据库:db
  • 5.查看当前所有数据库中的集合:show tables || show collections
  • 6.创建集合两种方式: 显示创建:db.createCollection("集合名成"); 隐式创建:db.集合名称.insert({name:"李四",age:22});
  • 7.向集合添加文档:db.集合名称.insert({name:"李四",age:22});
  • 8.删除集合文档:db.集合名称.remove({删除条件}); db.集合名称.remove(); --删除了所有文档
  • 9.查询集合中的文档:db.集合名称.find({条件}); db.集合名称.findOne(); -- 查出第一个
  • Mongodb还支持一些额外的参数选项:有时候我们返回特定的参数

    //返回除了age所有字段 db.集合名称.find({},{age:0});
    //返回tags=ten除了comments的所有列 db.集合名称.find({tags:'ten'},{comments:0});
    //返回id=16 的nane 字段 db.集合名称.({id:16},{name:1});
    注意:——id字段始终都会返回。

    查询集合中的文档 ,使用条件表达式(<, <=, >, >=,!=)

    //大于: field > value db.collection.find({field:{$gt:value}});
    //小于: field < value db.collection.find({field:{$lt:value}});
    //大于等于: field >= value db.collection.find({field:{$gte:value}});
    //小于等于: field <= value db.collection.find({field:{$lte:value}});
    //不等于: field != value db.collection.find({field:{$ne:value}});

    查询集合中的文档 ,统计(count)、排序(sort)、分页(skip、limit) db.customer.count(); db.customer.find().count(); db.customer.find({age:{$lt:5}}).count(); db.customer.find().sort({age:1}); 降序-1 db.customer.find().skip(2).limit(3); db.customer.find().sort({age:-1}).skip(2).limit(3); db.customer.find().sort({age:-1}).skip(2).limit(3).count(); db.customer.find().sort({age:-1}).skip(2).limit(3).count(0); db.customer.find().sort({age:-1}).skip(2).limit(3).count(1);

    更新集合中的文档,语法如下 db.collection.update(criteria,objNew,upsert,multi) 参数说明: criteria:用于设置查询条件的对象 objNew:用于设置更新内容的对象 upsert:如果记录已经存在,更新它,否则新增一个记录,取值为0或1 multi:如果有多个符合条件的记录,是否全部更新,取值为0或1 注意:默认情况下,只会更新第一个符合条件的记录 一般情况下后两个参数分别为0,1 ,即: db.collection.update(criteria,objNew,0,1)

    举个栗子: db.集合名称.update({name:"user1"},{name:"jack"}); 更新集合中的文档, $set 用来指定一个键的值,如果这个键不存在,则创建它 db.集合名称.update({name:"user1"},{$set:{name:"jack"}});

    查询集合中的文档 ,类似于关系型数据库,mongodb中也有游标的概念 游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标充当指针的作用。尽管游标能遍历结果中的所有行,但一次只指向一行。

    3.常见问题

    4.解决方案

    5.编码实战

    让我们来看看这个例子的代码。

    6.扩展思考

    7.参考文献

    8.更多讨论

    鸣谢

    感谢观看,如有出错,恳请指正

    BY : 北京分院 李宁虎