MongoDB(3)--Java 操作 MongoDB 的 API
引入mongoDb 依赖
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.8.1</version>
</dependency>
类比JDBC写法,相对比较偏底层
package com.lf; import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.WriteResult; public class MongoCRUDTest { public static void main(String[] args) { Mongo mongo = new Mongo("192.168.25.128",27017); DB db = new DB(mongo,"lf-demo"); DBCollection collection = db.getCollection("member");
//类比JDBC
DBObject dbObject = new BasicDBObject();
dbObject.put("name", "lf");
dbObject.put("age", "18");
dbObject.put("addr", "anhui hefei"); WriteResult insert = collection.insert(dbObject);
System.out.println(insert+"---------"); DBCursor dbCursor = collection.find();
for(Object obj : dbCursor){
System.out.println(obj);
}
}
}
官方快速入门demo
package com.lf; import java.util.Arrays; import org.bson.Document; import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase; public class MongoTest {
public static void main(String[] args) { MongoClient mongoClient = MongoClients.create("mongodb://192.168.25.128:27017");
MongoDatabase mongoDatabase = mongoClient.getDatabase("lf-demo");
MongoCollection<Document> collection = mongoDatabase.getCollection("lf-member");
Document document = new Document("name", "lf").append("age", "18")
.append("address", Arrays.asList("anhui", "hefei"))
.append("position", new Document("x", "125").append("y", "172"));
collection.insertOne(document); }
}
mongoDB框架:封装了mongoDB基本的操作
Morphia mongoDb的第一个orm框架(spring 的封装 mongoDBTemplate)
引入依赖
<dependency>
<groupId>org.mongodb.morphia</groupId>
<artifactId>morphia</artifactId>
<version>1.3.2</version>
</dependency>
创建MorphiaMember实体类
package com.lf.morphia; import org.bson.types.ObjectId;
import org.mongodb.morphia.annotations.Id; public class MorphiaMember { @Id
private ObjectId id; private String name;
private int age;
private String addr; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
} }
test
package com.lf.morphia; import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Key;
import org.mongodb.morphia.Morphia; import com.mongodb.MongoClient; public class MorphiaTest { public static void main(String[] args) { final Morphia morphia = new Morphia(); Datastore ds = morphia.createDatastore(new MongoClient("192.168.25.128",27017), "lf-demo"); MorphiaMember morphiaMember = new MorphiaMember();
morphiaMember.setAddr("anhui hefei");
morphiaMember.setAge(18);
morphiaMember.setName("lf001"); Key<MorphiaMember> key = ds.save(morphiaMember);
System.out.println(key.getId());
}
}
输出:5cbf34e2ee1cd4337cec8875
mongoDB的一些疑问及解答
1、怎么配置mongdb在centos启动时就默认启动?
利用网络资源(关键是思路)
2、怎么配置mongdb在centos启动时就默认启动
用户行为数据,数据量非常大
有一种后悔的感觉,想着更换平台
迁移会遇到一些问题
不要滥用,不要滥用,不要滥用
它是一个最像关系型数据库的非关系型数据库(给数据操作带来便利)
3、Mongo和ES对比
有elasticsearch 纯粹的是json(字符串)
mongo的优势是哪些
BSON GirdFS(复杂)
4、用户手机注册验证码存取适合用mongo吗?还是redis?
建议用Seesion,用Redis过时时间,不推荐用MongoDB
5、MongoDB应用场景
系统操作日志 可以的
那什么情况下适合mongo:
不规则日志:ELK, Log4J INFO,ERROR,WARN,DEBUG(字符串?)
Pattern,用正则去解析字符串,不止一个正则,
每一种日志格式都要编写一个正则去匹配
既然用正则麻烦,为什么还用ELK存储日志
你的系统已经平稳运行N年了(.Net,PHP、Java)
适合mongoDB:
规则日志:MongoDB,结构化的整理,
用户行为日志 operationTime creator type target
Timline,调用链路 invoker Time targetMethod args returnVal throws
持续增量(id + UpdateTime)
文件存储:GirdFS(文件存储系统)
不适合Reids:数据需要持久性的而且有一定的依赖性
适合Redis:数据会设置时效
分布式锁
用户登录token
数据库缓存中间件
6、能讲讲MongoDB(GridFS)、Hadoop、HBase对于数据存储得使用场景选择吗?
定位:
MongoDB,为一个结构化的缓存,由于设计原理不同,数据量是一定的瓶颈的。
HBase ,基于列簇扩展性,高可用程度会更加灵活,数量级和MongoDB也是有很大差异的。
HBase 通常会跟大数据联系在一起
MongoDB 顶多算是一个日志数据库,文件存储系统
7、Mongo怎么持久化的?
持久化都是用文件的形式存储,其实任何数据库都是用文件实现持久化的
MongoDB(3)--Java 操作 MongoDB 的 API的更多相关文章
- Mongodb快速入门之使用Java操作Mongodb
[IT168 专稿]在上一篇文章中,我们学习了Mongodb的安装和初步使用,在本文中,将学习如何使用Java去编程实现对Mongodb的操作. HelloWorld程序 学习任何程序的第一步,都是编 ...
- java操作mongodb(连接池)(转)
原文链接: java操作mongodb(连接池) Mongo的实例其实就是一个数据库连接池,这个连接池里默认有10个链接.我们没有必要重新实现这个链接池,但是我们可以更改这个连接池的配置.因为Mong ...
- Java操作Mongodb(转载)
好文章,值得收藏 HelloWorld程序 学习任何程序的第一步,都是编写HelloWorld程序,我们也不例外,看下如何通过Java编写一个HelloWorld的程序. 首先,要通过Java操作Mo ...
- [转载]使用Java操作Mongodb
HelloWorld程序 学习任何程序的第一步,都是编写HelloWorld程序,我们也不例外,看下如何通过Java编写一个HelloWorld的程序. 首先,要通过Java操作Mongodb,必须先 ...
- 【MongoDB for Java】Java操作MongoDB
上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...
- JAVA操作MongoDB数据库
1. 首先,下载MongoDB对Java支持的驱动包 驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads 2.Java操作Mo ...
- [转]MongoDB for Java】Java操作MongoDB
原文地址: MongoDB for Java]Java操作MongoDB 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开 ...
- Java操作MongoDB
上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html 介绍到了在MongoDB的控制台完成MongoDB的数据操作,通 ...
- Mongodb入门并使用java操作Mongodb
转载请注意出处:http://blog.csdn.net/zcm101 最近在学习NoSql,先从Mongodb入手,把最近学习的总结下. Mongodb下载安装 Mongodb的下载安装就不详细说了 ...
- 浅谈如何用Java操作MongoDB
NoSQL数据库因其可扩展性使其变得越来越流行,利用NoSQL数据库可以给你带来更多的好处,MongoDB是一个用C++编写的可度可扩展性的开源NoSQL数据库.本文主要讲述如何使用Java操作Mon ...
随机推荐
- javascript 4.2
element.value="......"也可以为属性设置新的值 setAttribute()方法是“第一级DOM”的组成部分之一,DOM是适用于多种环境和多种程序设计语言的通用 ...
- 安装Oracle数据库心得
学到Oracle数据库了,想在自己电脑上安装个Oracle数据库.在网上下载了一个Oracle18c版 下边是我安装Oracle18c版的数据库失败,后来在卸载过程中遇到的问题: 1.用Univers ...
- mac下 改变了ssh连接的端口 git怎么修改
1. 情况是这样的,为了安全起见,我们的服务器ssh连接端口改为了33 sudo vi /etc/ssh/ssh_config port 33 2. 因为git是基于ssh发送数据的,并且git服务 ...
- Postman 使用方法详解
转自:https://blog.csdn.net/fxbin123/article/details/80428216 一.Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的 ...
- 利用python破解sqlserver账号密码
一.编写密码测试函数 在用python连接mssql数据库的时候,通常会使用pymssql模板中的connect函数,格式如下: connect(server,user,password,databa ...
- 用vs2010打开使用vs2013升级后的WP工程
项目在win7+vs2010的环境中建立的,后来在win8.1+vs2013的环境下修改和完善: 但是所有功能实现后发现wp7项目在使用vs2013打开后因为单向升级的原因,项目只能被编译为wp8项目 ...
- [双系统linux] ----双系统切换导致系统时间错误
安装了linux双系统以后,发现每次双系统切换以后系统时间总会错误. 原因:Linux和win7(win10)双系统时间错误问题 时间相差8小时 MAC/linux 将系统硬件时间看待为UTC, 即U ...
- iptables工作常用操作
正确的设置iptables命令汇总 iptables -P INPUT ACCEPT iptables -F iptables -X iptables -Z iptables -I INPUT -p ...
- k8s基于CA签名的双向数字证书认证(三)
1.设置kube-apiserver的CA证书相关的文件和启动参数 1)创建CA证书和私钥相关的文件 openssl genrsa -out ca.key openssl req -x509 -n ...
- DEVEXPRESS GRIDVIEW 代码添加按钮(转)
https://www.cnblogs.com/qq-xiao/p/6122573.html 1.1 创建一个RepositoryItemButtonEdit方法 1 private Reposito ...