mongo作为nosql的一种,使用范围还是很广泛的,应用场景也很多,
● 网站数据:Mongo 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
● 缓存:由于性能很高,Mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo 搭建的持久化缓存层可以避免下层的数据源过载。
● 大尺寸、低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
● 高伸缩性的场景:Mongo 非常适合由数十或数百台服务器组成的数据库,Mongo 的路线图中已经包含对MapReduce 引擎的内置支持。
● 用于对象及JSON 数据的存储:Mongo 的BSON 数据格式非常适合文档化格式的存储及查询。
不适合使用mongoDB的场景:
● 高度事务性的系统:例如,银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
● 传统的商业智能应用:针对特定问题的BI 数据库会产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。
● 需要SQL 的问题。
很简单的java操作
首先是安装mongoDB,从https://www.mongodb.com/download-center 下载了,一直下一步的安装,我是安装到了c盘,在c盘再创建C:\data\db 这两层文件夹就可以去cmd中启动mongo了,当然了要把安装的bin,就是这个 C:\Program Files\MongoDB\Server\3.6\bin目录配置到path路径中.
只需要在一个黑窗口 数据命令 mongod 就能够启动mongodb了,最后会输出默认端口号是:27017
再重新打开一个cmd窗口,输入命令 mongo 就能进入mongo的shell命令控制台了,就可以进行操作了.这个还是非常简单的.
就是这样的,我们就完成了mongodb的安装,后面需要什么设置,再进行配置
下面就说说java最其的使用:
1.添加依赖:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.8.2</version>
</dependency>
2.写几个测试方法:
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import org.bson.Document;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author zk
* @Description: mongoDB的java基本操作
* @date 2018-11-09 14:15
*/
public class MongoTest1 {
public static void main(String[] args) {
// 连接到 mongodb 服务
MongoClient client = new MongoClient("localhost", 27017);
//连接到数据库
MongoDatabase database = client.getDatabase("col");
System.out.println(database);
System.out.println("success connect to mongo");
}
public static void createCollection(MongoDatabase db){
db.createCollection("java");
}
public static void getCollection(MongoDatabase db){
MongoCollection<Document> collection = db.getCollection("java");
FindIterable<Document> documents = collection.find();
System.out.println("documents"+documents);
System.out.println("collection"+collection);
}
/**
* 插入文档
* 1. 创建文档 org.bson.Document 参数为key-value的格式
* 2. 创建文档集合List<Document>
* 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用 mongoCollection.insertOne(Document)
* */
public static void insert(MongoDatabase db){
MongoCollection<Document> collection = db.getCollection("java");
Document document = new Document("title", "mysql");
document.append("name","zhaojun");
document.append("age",12);
List<Document> collect = Stream.of(document).collect(Collectors.toList());
collection.insertMany(collect);
System.out.println("插入成功");
}
/**
* 检索所有文档
* 1. 获取迭代器FindIterable<Document>
* 2. 获取游标MongoCursor<Document>
* 3. 通过游标遍历检索出的文档集合
* */
public static void queryAll(MongoDatabase db){
MongoCollection<Document> collection = db.getCollection("java");
FindIterable<Document> documents = collection.find();
for (Document document : documents) {
System.out.println(document);
}
}
public static void updateDoc(MongoDatabase db){
MongoCollection<Document> collection = db.getCollection("java");
//更新文档 将文档中likes=100的文档修改为likes=200
collection.updateMany(Filters.eq("age",12),new Document("$set",new Document("age",500)));
FindIterable<Document> documents = collection.find();
for (Document document : documents) {
System.out.println(document);
}
}
public static void delete(MongoDatabase db){
MongoCollection<Document> collection = db.getCollection("java");
//删除符合条件的第一个文档
collection.deleteOne(Filters.eq("age",500));
//删除所有符合条件的文档
collection.deleteMany(Filters.eq("likes",100));
//检索查看结果
for (Document doc : collection.find()) {
System.out.println(doc);
}
}
}
就是这么的简单,是吧.
这种文档型数据库的优势就是一些非结构化的数据的保存,处理非常的方便,我们有个需求开始很简单,最后多次更改后,发现用mysql实现起来很麻烦,也很复杂了,因为一些数据再放在mysql就不是那么的好了,就开始考虑使用monoDB了.
好了,今天就先写到这里了.算了水了一篇文章,哈哈哈