MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最想关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面相对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据简历索引。
特点:
他的特点是高性能、易部署、易使用,存储数据非常方便,主要功能特性有:面相集合存储,易存储对象类型的数据,模式自由,支持动态查询,支持完全索引,包含内部对象,支持查询,支持复制和故障恢复,使用高效的二进制数据存储,包括大型对象。自动处理碎片,以支持云计算层次的扩展性。支持ruby、python、java、C++、PHP、C#等多种语言。文件存储格式为BSON(一种JSON的扩展)。可通过网络访问。
使用原理:
所谓“面向集合”(Collection-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collection)。每个集合在数据库中都有一个唯一的标示名,并且可以包含无限制数目的文档,集合的概念乐死关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。
模式自由(schema-free),意味着对于存储的mongodb数据库中的文件,我们不需要知道它的任何结构定义,如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。存储的集合中的文档,被存储为键-值对的形式,键用于唯一标示一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized dOcument Format)。
实际应用:
MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017,推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
第一步安装MongoDB
只需要把下载下来的MongoDB版本解压开来即可。
第二部启动MongoDB服务器
首先需要在windows系统的 /目录下创建data/db文件夹。然后通过cmd窗到解压开MongoDB目录下的bin目录下执行mongod.exe启动MongoDB服务器。
第三部:启动MongoDB shell指令:
直接运行MongoDB目录下的mongo.exe文件及可。
MongoDB语法:
use School 创建数据库
show dbs;查看当前有哪些数据库。
student={name:"zhangsan",age:20}
db.students.save(student);这个表示把student这条记录插入到students这个集合中(相当于表)
db.students.find()查询students这个集合的记录。
Java操作MongoDB,首先下载MongoDB的java驱动包https://github.com/mongodb/mongo-java-driver/downloads。
Java中MongoDB的操作:
package com.yjpeng.database.mongodb;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
public class Mongodb {
public static void main(String[] args){
try{
Mongo mongo = new Mongo("192.168.122.69",27017);
DB db = mongo.getDB("school");
DBCollection dbCollection = db.getCollection("students");
BasicDBObject student_1 = new BasicDBObject();
student_1.put("name", "lisi");
student_1.put("no", 1);
student_1.put("age", 20);
dbCollection.insert(student_1);
// BasicDBObject student1 = new BasicDBObject();
// student1.put("no", 1);
//根据条件查询
// DBCursor cursor = dbCollection.find(student1);
//查询所有
DBCursor cursor = dbCollection.find();
while(cursor.hasNext()){
DBObject obje = cursor.next();
System.out.println(obje.get("name") + "," + obje.get("no") + "," + obje.get("age"));
}
dbCollection.drop();
}catch(Exception e){
e.printStackTrace();
}
}
}