什么是mongodb
是一个基于分布式文件存储的开源数据库系统, 在高负载的情况下,添加更多的节点,可以保证服务器的性能。 mongodb旨在为WEB应用提供可扩展的高性能数据存储解决方案。 它是将数据存储为一个文档,数据结构由键值(key=>value)对组成。 mongodb文档类似于json对象。字段值可以包含其他文档,数组及文档数组。
mongodb的基础使用
- 启动mongodb服务
./mongod --dbpath=/path/mongodb
ps: 这里为什么使用指定的数据库位置,由于使用默认数据库位置 /data/db 时, 出现了空间不足的情况,mongodb服务需要3.3G的空间。 所以在有多余空间的位置创建了数据库位置。
- mongodb连接
./mongod
- 数据库的一些操作语句
创建与切换数据库:use database;
如果存在该数据库就切换,如果不存在就创建并切换;
-
查看所有的数据库:show dbs;
刚创建的数据库如果不存放数据,就看不到;
-
查看当前数据库:db;
-
删除数据库:db.dropDatabase();
删除的是当前使用的数据库;
- 集合的一些操作
创建集合(插入文档):db.collectionName.insert(document);
如果不存在collectionName的集合就创建并插入document的文档,
存在就向这个集合直接插入document的数据,
其中document是BSON格式的;
-
更新文档:
db.collectionName.update(query, {$set:update},
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
});
其中query是一个BSON格式的查询条件;
update是BSON格式的需要更新的内容;
upsert : 可选,这个参数的意思是,如果不存在update的记录,
是否插入objNew,true为插入,默认是false,不插入;
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,
如果这个参数为true,就把按条件查出来多条记录全部更新;
writeConcern :可选,抛出异常的级别。
-
删除文档:
db.collectionName.remove(query,
{
justOne: <boolean>,
writeConcern: <document>
});
其中query是一个BSON格式的查询条件;
justOne : (可选)如果设为 true 或 1,则只删除一个文档;
writeConcern :(可选)抛出异常的级别。
-
查询文档:db.collectionName.find(query);
其中query是一个BSON格式的查询条件,不含参数时,查找集合中的所有文档;
ps: 什么是bson? BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
- MongoDB条件操作符
- (>) 大于 - $gt------------------- greater than
- (<) 小于 - $lt-------------------- gt equal
- (>=) 大于等于 - $gte----------- less than
- (<=) 小于等于 - $lte------------ lt equal
- (!=) 不等于 - $ne--------------- not equal
mongodb在java中的应用
- 下载相应的jar包,配置xml
- 下载jar包基于maven
<!--Mongdb-->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.2.2</version>
</dependency>
<!--spring配置mongodb-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.8.0.RELEASE</version>
</dependency>
- mongodb.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">
<!-- 加载mongodb配置信息 -->
<!-- ignore-unresolvable="true" 有多个加载配置文件的语句,需要给每个都加上这句话 -->
<context:property-placeholder location="classpath:mongodb.properties" ignore-unresolvable="true"/>
<mongo:mongo id="mongo" host="${mongodb.host}" port="${mongodb.port}" />
<mongo:db-factory dbname="database" mongo-ref="mongo" />
<bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
<constructor-arg name="username" value="${mongodb.username}" />
<constructor-arg name="password" value="${mongodb.password}" />
</bean>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo" />
<constructor-arg name="databaseName" value="${mongodb.databaseName}" />
<constructor-arg ref="userCredentials" />
</bean>
</beans>
mongodb.properties
## 数据库地址
mongodb.host =
## 数据库端口
mongodb.port =
## 数据库用户名
mongodb.username =
## 数据库密码
mongodb.password =
## 使用的数据库名
mongodb.databaseName =
- 在spring配置文件中引入mongodb配置文件
<!-- 导入mongodb的配置文件 -->
<import resource="mongodb.xml" />
- 实例测试
- 测试类主体
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring.xml" })
public class TestSpringMongoDB {
private static final Logger LOG = LoggerFactory
.getLogger(TestSpringMongoDB.class);
@Autowired
private MongoTemplate monogoTemplate;
}
- 测试查询
@Test
public void testQuery(){
// 获取到col集合
DBCollection collection = monogoTemplate.getCollection("col");
DBObject query = new BasicDBObject("title", "测试用spring插入数据");
DBCursor cursor = collection.find(query);
while(cursor.hasNext()){
LOG.info(cursor.next().toString());
}
}
- 测试插入
@Test
public void testInsert() {
// 获取到col集合
DBCollection collection = monogoTemplate.getCollection("col");
DBObject document = new BasicDBObject("title", "测试用spring插入数据");
document.put("time", new Date());
document.put("context", "没什么好说的");
document.put("url", "www.lslkk.com");
collection.insert(document);
}
- 测试更新
@Test
public void testUpdate(){
// 获取到col集合
DBCollection collection = monogoTemplate.getCollection("col");
DBObject query = new BasicDBObject("test", "测试用spring插入数据");
DBObject document = new BasicDBObject("title", "测试更新数据");
document.put("time", new Date());
document.put("context", "更新成功了");
document.put("url", "192.168.0.1");
collection.update(query, document);
}
- 测试删除
@Test
public void testDelete(){
// 获取到col集合
DBCollection collection = monogoTemplate.getCollection("col");
DBObject query = new BasicDBObject("title", "测试用spring插入数据");
collection.remove(query);
}