http://distfiles.macports.org/mongodb/
https://www.mongodb.com/download
安装:
cd ~
open -e .bash_profile
在打开的文件中添加:
MONGODB_HOME=“解压地址”
source .bash_profile
cd “MongoDB的安装目录”
mkdir data
mkdir log
验证:
mongod -version
启动:
cd “MongoDB的安装目录”
mongod --dbpath data --logpath log/mongod.log --logappend --fork
少年,如果你不想写代码,复制吧:https://github.com/singgel/NoSql-SkillTree
package com.hks.springnosql.mongodb;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import org.bson.Document;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: hekuangsheng
* @Date: 2018/10/15
*/
public class MongoDBJDBC{
public static void main( String args[] ){
try{
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");
System.out.println("Connect to database successfully");
//使用 com.mongodb.client.MongoDatabase 类中的createCollection()来创建集合
mongoDatabase.createCollection("test");
System.out.println("集合创建成功");
//使用com.mongodb.client.MongoDatabase类的 getCollection() 方法来获取一个集合
MongoCollection collection = mongoDatabase.getCollection("test");
System.out.println("集合 test 选择成功");
//插入文档
/**
* 1. 创建文档 org.bson.Document 参数为key-value的格式
* 2. 创建文档集合List
* 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List) 插入单个文档可以用 mongoCollection.insertOne(Document)
* */
Document document = new Document("title", "MongoDB").
append("description", "database").
append("likes", 100).
append("by", "Fly");
List documents = new ArrayList();
documents.add(document);
collection.insertMany(documents);
System.out.println("文档插入成功");
//检索所有文档
/**
* 1. 获取迭代器FindIterable
* 2. 获取游标MongoCursor
* 3. 通过游标遍历检索出的文档集合
* */
FindIterable findIterable = collection.find();
MongoCursor mongoCursor = findIterable.iterator();
while(mongoCursor.hasNext()){
System.out.println(mongoCursor.next());
}
//更新文档 将文档中likes=100的文档修改为likes=200
collection.updateMany(Filters.eq("likes", 100), new Document("$set",new Document("likes",200)));
//检索查看结果
FindIterable findIterable1 = collection.find();
MongoCursor mongoCursor1 = findIterable1.iterator();
while(mongoCursor1.hasNext()){
System.out.println(mongoCursor.next());
}
//删除符合条件的第一个文档
collection.deleteOne(Filters.eq("likes", 200));
//删除所有符合条件的文档
collection.deleteMany (Filters.eq("likes", 200));
//检索查看结果
FindIterable findIterable2 = collection.find();
MongoCursor mongoCursor2 = findIterable2.iterator();
while(mongoCursor2.hasNext()){
System.out.println(mongoCursor2.next());
}
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
MongoDB的springboot继承案例:
这篇文章主要介绍springboot如何整合mongodb。
准备工作
安装 MongoDB
jdk 1.8
maven 3.0
idea
环境依赖
在pom文件引入spring-boot-starter-data-mongodb依赖:
##数据源配置
如果mongodb端口是默认端口,并且没有设置密码,可不配置,sprinboot会开启默认的。
spring.data.mongodb.uri=mongodb://localhost:27017/springboot-db
mongodb设置了密码,这样配置:
spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/dbname
定义一个简单的实体
package com.hks.springnosql.mongo;
import org.springframework.data.annotation.Id;
import java.util.Date;
/**
* @Author: hekuangsheng
* @Date: 2018/10/15
*
* 增加邮件信息实体,增加id属性
*/
public class MailMsg {
@Id
private String id;
private String to;
private String subject;
private String text;
private Date sendDt;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Date getSendDt() {
return sendDt;
}
public void setSendDt(Date sendDt) {
this.sendDt = sendDt;
}
}
数据操作dao层
package com.hks.springnosql.mongo;
/**
* @Author: hekuangsheng
* @Date: 2018/10/15
*
* 创建MailMsg的mongodb数据访问对象
*/
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface MailMsgRepository extends MongoRepository {
MailMsg findByTo(String to);
}
写一个接口,继承MongoRepository,这个接口有了几本的CURD的功能。如果你想自定义一些查询,比如根据firstName来查询,获取根据lastName来查询,只需要定义一个方法即可。注意firstName严格按照存入的mongodb的字段对应。在典型的java的应用程序,写这样一个接口的方法,需要自己实现,但是在springboot中,你只需要按照格式写一个接口名和对应的参数就可以了,因为springboot已经帮你实现了。
测试
package com.hks.springnosql.mail;
/**
* @Author: hekuangsheng
* @Date: 2018/10/15
*/
import com.alibaba.fastjson.JSON;
import com.hks.springnosql.mongo.MailHelper;
import com.hks.springnosql.mongo.MailMsg;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@RestController
public class MailController {
private static final Logger LOGGER = LoggerFactory.getLogger(MailController.class);
@Resource
private MailHelper mailHelper;
@RequestMapping("/mail")
public String mail(HttpServletRequest request)
{
LOGGER.info("start send mail...");
mailHelper.sendSimpleEmail();
LOGGER.info("end send mail...");
return "Send mail ok.";
}
@RequestMapping("/find/to")
public String findMailByTo(HttpServletRequest request, String to) {
MailMsg msg = mailHelper.findByTo(to);
if (msg == null){
return "not found by to " + to;
}
return JSON.toJSONString(msg);
}
}
在springboot的应用程序,加入测试代码。启动程序,控制台打印了:
Customers found with findAll():
-------------------------------
Customer[id=58f880f589ffb696b8a6077e, firstName=‘Alice’, lastName=‘Smith’]
Customer[id=58f880f589ffb696b8a6077f, firstName=‘Bob’, lastName=‘Smith’]
Customer found with findByFirstName(‘Alice’):
--------------------------------
Customer[id=58f880f589ffb696b8a6077e, firstName=‘Alice’, lastName=‘Smith’]
Customers found with findByLastName(‘Smith’):
--------------------------------
Customer[id=58f880f589ffb696b8a6077e, firstName=‘Alice’, lastName=‘Smith’]
Customer[id=58f880f589ffb696b8a6077f, firstName=‘Bob’, lastName=‘Smith’]
测试通过。
源码下载:https://github.com/singgel/Spring-SkillTree/tree/master/spring-nosql