转自::[http://www.cnblogs.com/dennisit/archive/2013/01/29/2881006.html]
步骤1:导入jar包到项目中
步骤2:操作mongodb
Java对mongodb的$slice操作
Java对mongodb的$eleMatch操作
Java对mongodb的$where操作
对索引的操作
创建索引
SQL:
MongoDB: db.集合.ensureIndex({'列1':1,'列2':-1}) //1-升序 -1-降序
Java:
Java可以通过DBCollection类的createIndex(DBObject keys)方法创建索引,它接收一个DBObject类型的参数“keys”用于表明在哪些列上创建索引.
对1列创建索引
//在user集合的name列上创建索引
collection.createIndex(new BasicDBObject(“name”,1));
可以通过db.集合.getIndexes();查看索引信息
BasicDBObject index = new BasicDBObject();
index.put("name", 1);
index.put("password", -1);
collection.createIndex(index);
获取索引
MongoDB: db.集合.getIndexes();
Java:
DBCollection类的getIndexInfo();
//获取集合中的所有索引信息
List<DBObject> list = collection.getIndexInfo();
for(DBObject var : list){
System.out.println(var);
}
删除索引
MongoDB: db.集合.dropIndex({'列1':1,'列2':})
Java:
collection.dropIndex(new BasicDBObject(“name”,1));
//删除该集合中所有索引[_id索引不支持删除]
collection.dropIndexes();
可以通过db.user.getIndexKeys();查看user集合中的索引
Java对MongoDB的高级查询
使用QueryBuilder查询构造器对MongoDB进行高级查询
select * from user where name = ‘user3’;
MongoDB:
db.user.find( { name:“user3″} );
Java代码:
DBCollection collection = db.getCollection(“user”);
//查询用户名为user3的用户
DBObject query = new QueryBuilder().put(“name”).is(“user3″).get();
DBCursor cur = collection.find(query);
while(cur.hasNext()){
System.out.println(cur.next());
}
输出结果:
{ “_id” : { “$oid” : “50f6d250778eafb6ef5bcee7″} , “name” : “user3″ , “age” : 23.0}
notEquals不等于
查询user集合中用户名name值不等于user3的用户
select * from user where username != ‘user3’;
MongoDB:
db.user.find( { name:{$ne:“user3″} } );
Java代码:
DBCollection collection = db.getCollection(“user”);
//查询用户名不为user3的用户
DBObject query = new QueryBuilder().put(“name”).notEquals(“user3″).get();
DBCursor cur = collection.find(query);
while(cur.hasNext()){
System.out.println(cur.next());
}
输出结果:
{ “_id” : { “$oid” : “50f6d250778eafb6ef5bcee5″} , “name” : “user1″ , “age” : 21.0}
{ “_id” : { “$oid” : “50f6d250778eafb6ef5bcee6″} , “name” : “user2″ , “age” : 22.0}
{ “_id” : { “$oid” : “50f6d250778eafb6ef5bcee8″} , “name” : “user4″ , “age” : 24.0}
{ “_id” : { “$oid” : “50f6d250778eafb6ef5bcee9″} , “name” : “user5″ , “age” : 25.0}
greaterThan大于
查询user集合中age大于22的用户
select * from user where age > 22;
MongoDB:
db.user.find( { age:{$gt:22} } );
QueryBuilder构造:
DBObject query = new QueryBuilder().put(“age”).greaterThan(22).get();
greaterThanEquals大于等于
查询user集合中age大于等于22的用户
select * from user where age >= 22;
MongoDB:
db.user.find( { age:{$gte:22} } );
QueryBuilder构造:
DBObject query = new QueryBuilder().put(“age”).greaterThanEquals(22).get();
lessThan小于
查询user集合中age小于22的用户
select * from user where age < 22;
MongoDB:
db.user.find( { age:{$lt:22} } );
QueryBuilder构造:
DBObject query = new QueryBuilder().put(“age”).lessThan(22).get();
lessThanEquals小于等于
查询user集合中age小于等于22的用户
select * from user where age <= 22;
MongoDB:
db.user.find( { age:{$lte:22} } );
QueryBuilder构造:
DBObject query = new QueryBuilder().put(“age”).lessThanEquals(22).get();
In范围内
查询user集合中age在23或24的记录
select * from user where age in (23,24);
MongoDB:
db.user.find( { age:{$in:[23,24]} } );
Java代码:
DBCollection collection = db.getCollection(“user”);
//查询user集合中age为23或者24的用户
int[] inList = {23,24};
DBObject query = new QueryBuilder().put(“age”).in(inList).get();
DBCursor cur = collection.find(query);
while(cur.hasNext()){
System.out.println(cur.next());
}
notIn范围外
查询user集合中age不是23或24的记录
select * from user where age not in (23,24);
MongoDB:
db.user.find( { age:{$nin:[23,24]} } );
Java代码:
DBCollection collection = db.getCollection(“user”);
//查询user集合中age为23或者24的用户
int[] inList = {23,24};
DBObject query = new QueryBuilder().put(“age”).notIn(inList).get();
DBCursor cur = collection.find(query);
and逻辑与
查询user集合中age大于22并且性别为”man“的用户
select * from user where sex = ‘man’ and age > 20;
MongoDB:
db.user.find({sex:“man”,age:{$gt:20}});
Java代码:
//查询user集合中age大于22并且性别为”man“的用户
DBObject query = new QueryBuilder().put(“sex”).is(“man”).and(“age”).greaterThan(20).get();
正则表达式
查询name以user开头的记录
select * from user where name like ‘user%’;
MongoDB:
db.user.find({name:/^user.*/});
Java代码:
DBCollection collection = db.getCollection(“user”);
Pattern pattern = Pattern.compile(“^user”);
BasicDBObject query = new BasicDBObject(“name”,pattern);
分页查询
mongoDB中通过skip()和limit()结合实现分页
Mongo mongo = null;
try {
//通过连接字符串得到一个数据库实例的连接
mongo = new Mongo(“127.0.0.1″,27017);
} catch (Exception e) {
e.printStackTrace();
}
//连接超级用户
DB db = mongo.getDB(“mydb”);
//指定安全授权信息[超级用户的用户名为root,密码为root123]
db.authenticate(“mydbusr”, “123”.toCharArray());
int perNum = 10; //每页显示的数目
int count = 0; //数据库中总共记录数目
int pageNum = 0; //分页后的页数
DBCollection collection = db.getCollection(“user”);
count
= (int)collection.getCount(); //总共记录数pageNum = (count-1)/perNum + 1; //计算总共页数
System.out.println(“数据库”+collection+”中共有”+count+”条记录,每页显示”+perNum+”条记录,可显示”+pageNum+”页”);
//循环分页打印
for(int i=0; i<pageNum; i++){
System.out.println(“————第” + (i+1) + “页数据————“);
DBCursor cur = collection.find().skip(i*perNum).limit(perNum);
while(cur.hasNext()){
System.out.println(cur.next());
}
}
}
Java操作GridFS
插入数据
使用GridFS类的createFile(File file)方法可以将大文件保存到MongoDB中,该方法接收一个参数,表示本地文件路径
Mongo mongo = null;
try {
mongo = new Mongo(“127.0.0.1″,27017);
} catch (Exception e) {
// TODO: handle exception
}
DB db = mongo.getDB(“mydb”);
db.authenticate(“mydbusr”, “123”.toCharArray());
File zipFile
= new File(“D:/freemarker源码.rar”); //创建文件对象//将文件存放到file数据库中
GridFS gfs = new GridFS(db,”file”);
//创建大文件对象输入流
GridFSInputFile gfsFile = null;
try {
//将本地文件存储到mongo中
gfsFile = gfs.createFile(zipFile);
} catch (Exception e) {
e.printStackTrace();
}
//设置存储的文件名
gfsFile.setFilename(“demozip”);
gfsFile.save();
}
在mydb数据库下查看存储的文件信息
> db
mydb
> show collections;
file.chunks
file.files
system.indexes
system.users
user
> db.file.files.findOne();
{
“_id” : ObjectId(“50f780a7de886482c92a56c9″),
“chunkSize” : NumberLong(262144),
“length” : NumberLong(83711),
“md5″ : “51f235ccf838511eb0f53633dbca22b3″,
“filename” : “demozip”,
“contentType” : null,
“uploadDate” : ISODate(“2013-01-17T04:40:07.240Z”),
“aliases” : null
}
查询数据
因为上传了一个zip文档,为了方便观察,使用GridFS类的findOne(DBObject query)方法,按文件名查找数据库中的GridFS对象信息,该方法结束1个参数,代表查询条件.
db.authenticate(“mydbusr”, “123”.toCharArray());
//将文件存放到file数据库中
GridFS gfs = new GridFS(db,”file”);
//查询GridFS数据,按照文件名查询 db.file.files.findOne({filename:”demozip”});
GridFSDBFile zipfile = gfs.findOne(“demozip”);
System.out.println(zipfile);
读取并保存数据
首先用find或者findOne方法找到GridFS对象,再用writeTo方法将数据写到本地.
db.authenticate(“mydbusr”, “123”.toCharArray());
GridFS gfs
= new GridFS(db,”file”);//查询GridFS数据,按照文件名查询 db.file.files.find({filename:”demozip”});
GridFSDBFile zipfile = gfs.findOne(“demozip”);
System.out.println(“服务器端文件MD5值为:” + zipfile.getMD5());
try {
//将读取到的文件写到本地
zipfile.writeTo(“E:/downgidfs.zip”);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
控制台输出:服务器端文件MD5值为:51f235ccf838511eb0f53633dbca22b3
验证下载到的文件的MD5
E:>md5sum downgidfs.zip
51f235ccf838511eb0f53633dbca22b3 *downgidfs.zip
删除数据
Java中使用remove(DBObject query)来实现移除数据
//查询GridFS数据,按照文件名查询 db.file.files.find({filename:”demozip”});
GridFSDBFile zipfile = gfs.findOne(“demozip”);
//删除查询到的GridFS数据
gfs.remove(zipfile);
相关推荐
将一系列图片文件存储到MongoDB中 java操作mongodb存储文件
【Java 操作 MongoDB 知识点详解】 MongoDB 是一个流行的开源、分布式文档数据库系统,以其灵活性、高性能和高可用性而受到欢迎。在 Java 开发环境中,可以通过 MongoDB 的 Java 驱动程序来实现对 MongoDB 数据库的...
以上就是Java操作MongoDB的基本步骤。这个“mongodb_helloworld”项目应该包含示例代码,帮助初学者快速上手。记得在实际应用中,你需要处理异常并适当地关闭MongoClient,以避免资源泄漏: ```java mongoClient....
在这个Java操作MongoDB中存储的文件实例中,我们将探讨如何利用GridFS API进行文件的存取。 首先,我们需要在Java项目中引入MongoDB的驱动库。目前,Java驱动通常使用的是MongoDB Java Driver,可以在Maven仓库中...
Java操作MongoDB主要涉及到的是Java驱动程序与MongoDB数据库之间的交互,这涵盖了创建连接、执行CRUD(创建、读取、更新、删除)操作等一系列基本的数据库管理任务。MongoDB是一个流行的NoSQL数据库,以其灵活性、高...
Java操作MongoDB是一种常见的数据交互方式,特别是在Java后端开发中。MongoDB是一个NoSQL数据库,以其灵活性、高性能和易扩展性而受到欢迎。在Java中,我们可以使用MongoDB的Java驱动程序来与MongoDB进行通信。以下...
以上就是使用Java操作MongoDB的基本步骤。在实际项目中,你可能需要处理更复杂的查询和事务,以及错误处理和连接池管理等高级话题。学习更多关于MongoDB的官方文档和社区资源,如CSDN博客...
Java操作MongoDB实例,压缩包内为完整项目源码,使用MyEclipse软件 见文:https://blog.csdn.net/qq_33427869/article/details/87270444
对于"java操作mongoDB实现文件上传预览打包下载"这个主题,我们将深入探讨如何利用Java与MongoDB交互,实现文件的上传、下载、预览以及打包下载等功能。 首先,我们需要在Java项目中引入MongoDB的驱动库,通常是...
这篇博文“Java操作MongoDB之CRUD(增删改查)”主要探讨了如何使用Java驱动程序来执行基本的数据库操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)。 首先,我们来了解MongoDB的Java驱动...
java操作mongodb的工具类,增删查改方法
在本文中,我们将深入探讨如何使用Java操作MongoDB并结合Spring框架进行整合。MongoDB是一个流行的NoSQL数据库,它以JSON格式存储数据,适合处理大量非结构化或半结构化数据。Spring框架则是一个强大的Java企业级...
以上就是使用Java操作MongoDB的基本步骤。在实际应用中,你可能需要处理更复杂的查询和更新,以及错误处理、连接管理等。MongoDB提供了丰富的查询表达式,如`$gt`, `$lt`, `$in`, `$exists`等,以及聚合框架和地理...
Java操作MongoDB是一种常见的数据交互方式,特别是在大数据和分布式系统中。MongoDB是一个高性能、开源、无模式的文档型数据库,而Java作为广泛使用的编程语言,提供了丰富的库和API来与MongoDB进行交互。本Demo提供...
为了更深入地了解如何使用Java操作MongoDB,你需要学习以下知识点: 1. **MongoDB Java驱动程序**:了解如何添加驱动程序依赖,以及如何创建`MongoClient`实例来连接到MongoDB服务器。 2. **数据模型**:理解...
### JAVA操作MongoDB知识点详解 #### 1. Java操作MongoDB简介 MongoDB是一种面向文档的NoSQL数据库,它提供了灵活的文档模型和高性能的读写操作,非常适合处理大量的数据和快速迭代的开发环境。而Java是一种广泛...
Java 操作 MongoDB 是一个常见的需求,特别是在开发基于 Java 的应用程序时需要存储和检索非结构化数据。本篇文章将深入探讨如何使用 Java SDK 来与 MongoDB 进行交互,包括基本的增、删、改、查操作。 首先,要...