MongoDB操作命令
Mongo简介
属于非关系型数据库,是分布式文档数据库。
特点:扩展灵活、结构灵活、使用方便、支持查询、索引。
不足:缺乏事务控制,无法保障数据完整性。
oracle存储结构
mongodb存储结构
Mongo命令
库命令
查看
show dbs
使用
use 库名称
创建
use 库名称 //库存在就是使用;不存在就创建再使用
删除
db.dropDatabase() //删除当前use的库
集合
查看
show collections
创建
当使用"db.集合名.insert()"插入数据时,集合不存在时会自动创建
删除
db.集合名.drop()
数据操作
插入
插入单条记录
db.dept.insert({"no":1,"dname":"beijing"})
插入多条记录
var objs = [{"no":3,"dname":"chengdu"},{"no":4,"dname":"shenyang"}]; db.dept.insert(objs)
或
for(var i=1;i<10;i++){ db.dept.insert({"no":10+i,"dname":"bj"+i}); }
删除
删除单条记录
db.dept.remove({"no":1})
删除所有记录
db.dept.remove({})
修改
全部更新覆盖
db.dept.update({"no":1},{"dname":"shanghai"})
部分更新
db.dept.update(条件json对象,{$set:要更新的json对象}) //示例 db.dept.update({"no":1},{$set:{"dname":"chengdu"}})
查询
$gt、$lt、$gte、$lte、$ne等
查询所有记录
db.dept.find()
查询某条记录,no=1的记录
db.dept.find({"no":1})
查询条件记录,no>1的记录
db.dept.find({"no":{$gt:1}}) db.dept.find({"no":{$gte:1}})
排序
db.dept.find().sort({"no":1})
1表示升序、-1表示降序
分页
//跳过begin条,然后抓取记录 db.dept.find().skip(begin).limit(记录数)
统计
统计所有记录数量
db.dept.count()
统计满足条件记录数
db.dept.count({"no":11}) db.dept.count({"no":{$gt:10}})
Java访问MongoDB
驱动包:mongo-java-driver-2.13.2.jar
原生方式
引入mongo-java-driver-2.13.2.jar驱动包
建立连接
MongoClient mongo = new MongoClient("localhost"); //操作 mongo.close();关闭连接
获取库和集合信息
MongoClient mongo = new MongoClient("localhost"); List<String> dbs = mongo.getDatabaseNames();//show dbs 查看所有库名 DB db = mongo.getDB("java11");//use java11 获取库对象 //db.getCollectionNames();//show collections 查看集合名
插入记录
MongoClient mongo = new MongoClient("localhost"); DB db = mongo.getDB("java11"); DBCollection dept = db.getCollection("dept"); DBObject arr = new BasicDBObject(); arr.put("no", 10); arr.put("dname", "beijing1"); dept.insert(arr);//db.dept.insert({"no":10,"dname":"beijing1"}) mongo.close();
更新记录
MongoClient mongo = new MongoClient("localhost"); DB db = mongo.getDB("java11"); DBCollection dept = db.getCollection("dept"); DBObject q = new BasicDBObject(); q.put("no", 10); DBObject o = new BasicDBObject(); DBObject n = new BasicDBObject(); n.put("dname", "北京"); o.put("$set", n); //db.dept.update({"no":10},{$set:{"dname":"北京"}}) dept.update(q, o); mongo.close();
查询记录
MongoClient mongo = new MongoClient("localhost"); DB db = mongo.getDB("java11");//use java11 获取库对象 DBCollection dept = db.getCollection("dept");//获取dept集合对象 DBCursor cursor = dept.find();//db.dept.find() 查询所有记录 while(cursor.hasNext()){ DBObject obj = cursor.next(); Object no = obj.get("no"); Object dname = obj.get("dname"); System.out.println("no="+no+" dname="+dname); } mongo.close();
spring-data-mongodb方式(Spring框架)
利用MongoTemplate对象进行MongoDB操作。
- 导入下列jar包,注意版本匹配,容易产生冲突。
- mongo-java-driver-2.13.2.jar
- spring-data-mongodb-1.4.2.RELEASE.jar
- spring-data-commons-1.7.2.RELEASE.jar
- slf4j-api-1.5.8.jar
- slf4j-log4j12-1.5.8.jar
- log4j-1.2.12.jar
- 追加Spring配置,创建MongoTemplate对象
<!-- 追加mongo命名空间,定义Factory -->
<mongo:db-factory id="mongoFactory"
host="localhost" port="27017" dbname="java11"/>
<!-- 创建MongoTemplate -->
<bean id="mongoTemplate"
class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg index="0" ref="mongoFactory">
</constructor-arg>
</bean>
- 测试Template应用
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:spring-mongo.xml"})
public class TestMongoTemplate {
@Resource
private MongoTemplate mongoTemplate;
@Test//测试添加
public void test1(){
System.out.println(mongoTemplate);
User user = new User();
user.setId(20);
user.setName("tiger");
user.setPassword("123456");
mongoTemplate.save(user);//默认集合名user
}
@Test//测试查询所有记录
public void test2(){
List<User> list = mongoTemplate.findAll(User.class);//默认查user集合
for(User user:list){
System.out.println(user.getId()+" "+user.getName()+" "+user.getPassword());
}
}
@Test//测试按条件查询记录
public void test3(){
Query query = new Query(Criteria.where("id").is(10));
User user = mongoTemplate.findOne(
query,User.class);
System.out.println(user.getId()+" "+user.getName()+" "+user.getPassword());
}
}
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!