引入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的更多相关文章

  1. Mongodb快速入门之使用Java操作Mongodb

    [IT168 专稿]在上一篇文章中,我们学习了Mongodb的安装和初步使用,在本文中,将学习如何使用Java去编程实现对Mongodb的操作. HelloWorld程序 学习任何程序的第一步,都是编 ...

  2. java操作mongodb(连接池)(转)

    原文链接: java操作mongodb(连接池) Mongo的实例其实就是一个数据库连接池,这个连接池里默认有10个链接.我们没有必要重新实现这个链接池,但是我们可以更改这个连接池的配置.因为Mong ...

  3. Java操作Mongodb(转载)

    好文章,值得收藏 HelloWorld程序 学习任何程序的第一步,都是编写HelloWorld程序,我们也不例外,看下如何通过Java编写一个HelloWorld的程序. 首先,要通过Java操作Mo ...

  4. [转载]使用Java操作Mongodb

    HelloWorld程序 学习任何程序的第一步,都是编写HelloWorld程序,我们也不例外,看下如何通过Java编写一个HelloWorld的程序. 首先,要通过Java操作Mongodb,必须先 ...

  5. 【MongoDB for Java】Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...

  6. JAVA操作MongoDB数据库

    1. 首先,下载MongoDB对Java支持的驱动包 驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads 2.Java操作Mo ...

  7. [转]MongoDB for Java】Java操作MongoDB

    原文地址: MongoDB for Java]Java操作MongoDB 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开 ...

  8. Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html 介绍到了在MongoDB的控制台完成MongoDB的数据操作,通 ...

  9. Mongodb入门并使用java操作Mongodb

    转载请注意出处:http://blog.csdn.net/zcm101 最近在学习NoSql,先从Mongodb入手,把最近学习的总结下. Mongodb下载安装 Mongodb的下载安装就不详细说了 ...

  10. 浅谈如何用Java操作MongoDB

    NoSQL数据库因其可扩展性使其变得越来越流行,利用NoSQL数据库可以给你带来更多的好处,MongoDB是一个用C++编写的可度可扩展性的开源NoSQL数据库.本文主要讲述如何使用Java操作Mon ...

随机推荐

  1. Lambda表达式中的GroupBy使用的正确姿势

    本实例适用于:将记录中的数据进行分组得到一个一对多模型数据Model 案例中的Model 注:UserDetailes 包含User的信息和其所属部门信息 需求:将UserDetailes 的记录分组 ...

  2. 11. IDS (Intrusion detection systems 入侵检测系统 6个)

    Snort该网络入侵检测和防御系统擅长于IP网络上的流量分析和数据包记录. 通过协议分析,内容研究和各种预处理器,Snort可以检测到数千个蠕虫,漏洞利用尝试,端口扫描和其他可疑行为. Snort使用 ...

  3. Pong 打乒乓

    发售年份 1972 发售平台 多平台 开发商 雅达利(Atari) 类型 体育休闲 https://www.youtube.com/watch?v=fiShX2pTz9A

  4. html 出现粒子线条,鼠标移动会以鼠标为中心吸附的特效之canvas-nest.js插件

    我在网上看到一个很炫酷,很有趣的特效,网页上会有很多移动的粒子和线条,鼠标经过时会以鼠标为中心吸附过来,如果时间够久,会形成一个类似震动的.带辐条的车轮子的东西. 网上搜了一下,源码是github里面 ...

  5. Linux 定时任务Crontab的使用

    1.准备好Java程序,导出为Jar文件 如myProject.jar 2.写Shell脚本 startTask.sh echo 'start...' cd  /home/root/yourFolde ...

  6. [转]微软商店 打开就显示无法加载该页面 代码0x80131500?

    在某博客看到的方法,供参考,可以尝试一下,我的也是这么解决的 1.打开“运行”输入 inetcpl.cpl (“WINDOWS”+“R”键,输入 inetcpl.cpl亦可) 2.点开高级往下拉,勾上 ...

  7. cocos CCLayer glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);ios11闪退 spine动画

    搜索一下方法,找到后替换不同内容: void PolygonBatch::flush () { if (!_verticesCount) return; GL::bindTexture2D(_text ...

  8. Assets Library开发总结

    Assets Library beta版的开发工作告一段落,本着有始有终的原则,这个项目还是需要做个总结的,恩~ 先甩一个链接:https://vimeo.com/238186671 考虑到该项目开发 ...

  9. 关于UI自动化中元素定位常用方法的个人总结

    1.如果目标元素有id属性,优先使用id定位: 2.元素locator尽可能保证简洁,考虑locator中路径的变化频率,尽量减少后期更新和维护成本: 3.使用xpath时,不要一味的使用‘/’逐层进 ...

  10. GridView更新后获取不到文本框修改后的值

    需要在Page_Load事件里为gridview绑定数据时,添加回传判断 if (!IsPostBack) { 绑定数据 }