Ⅰ 怎么使用java操作mongodb更新整个文档
上篇博客介绍了java操作mongoDB进行对文件的处理。现在来介绍一下对文档的处理。和对文件的处理一样,也是通过java驱动中提供的几个类相互作用完成的。这几个类分别是:
DBCollection类:指定数据库中指定集合的实例,提供了增删改查等一系列操作。在关系型数据库中,对数据的增删改查操作是建立在表的基础上的,在mongodb中是建立在集合的基础上进行的。
DBObject接口:DBObject是键值的映射,因此,可以将DBObject的实现类作为查询的返回结果,也可以作为查询条件
DBCursor:游标,返回结果的集合。
下面是部分实例:
[java] view plain
Mongo mongo = new Mongo();
DB db = mongo.getDB("myMongoDB");
DBCollection course = db.getCollection("course");//对myMongoDB数据库中course集合进行操作
//添加操作
//下面分别是创建文档的几种方式:1. .append() 2. .put() 3. 通过map 4. 将json转换成DBObject对象
DBObject english = new BasicDBObject().append("name","english").append("score", 5).append("id",1);
course.insert(english);
DBObject math = new BasicDBObject();
math.put("id", 2);
math.put("name", "math");
math.put("score", 10);
course.insert(math);
Map<String,Object> map = new HashMap<String,Object>();
map.put("name","physics" );
map.put("score", 10);
map.put("id", 3);
DBObject physics= new BasicDBObject(map);
course.insert(physics);
String json ="{'name':'chemistry','score':10,'id':4}";
DBObject chemistry =(DBObject)JSON.parse(json);
course.insert(chemistry);
List<DBObject> courseList = new ArrayList<DBObject>();
DBObject chinese = new BasicDBObject().append("name","chinese").append("score", 10).append("id", 5);
DBObject history = new BasicDBObject().append("name", "history").append("score", 10).append("id", 6);
courseList.add(chinese);
courseList.add(history);
course.insert(courseList);
//添加内嵌文档
String json2 =" {'name':'english','score':10,'teacher':[{'name':'柳松','id':'1'},{'name':'柳松松','id':2}]}";
DBObject english2= (DBObject)JSON.parse(json);
course.insert(english2);
List<DBObject> list = new ArrayList<DBObject>();
list.add(new BasicDBObject("name","柳松").append("id",1));
list.add(new BasicDBObject("name","柳松松").append("id",2));
DBObject english3= new BasicDBObject().append("name","english").append("score",10).append("teacher",list);
//查询
//查询所有、查询一个文档、条件查询
DBCursor cur = course.find();
while(cur.hasNext()){
DBObject document = cur.next();
System.out.println(document.get("name"));
}
DBObject document = course.findOne();
String name=(String)document.get("name");
System.out.println(name);
//查询学分=5的
DBObject query1 = new BasicDBObject("score",5);
DBObject query2 = new BasicDBObject("score",new BasicDBObject("$gte",5));
DBCursor cur2 = course.find(query2);
//条件表达式:$ge(>) $get(>=) $lt(<) $lte(<=) $ne(<>) $in $nin $all $exists $or $nor $where $type等等
//查找并修改
DBObject newDocument = course.findAndModify(new BasicDBObject("score",5), new BasicDBObject("score",15));
//更新操作
//q:更新条件 o:更新后的对象
course.update(new BasicDBObject("score",10), new BasicDBObject("test",15));
course.update(new BasicDBObject("score",15), new BasicDBObject("$set",new BasicDBObject("isRequired",true)));
//两个的区别是,第一个更新是将{"test":15}这个文档替换原来的文档,
//第二个更新添加了条件表达式$set,是在原来文档的基础上添加"isRequired"这个键
//条件表达式:$set $unset $push $inc $push $push $addToSet $pull $pullAll $pop等等
//当_id相同时,执行save方法相当于更新操作
course.save(new BasicDBObject("name","math").append("_id", 1));
course.save(new BasicDBObject("name","数学").append("_id", 1));
//删除符合条件的文档
course.remove(new BasicDBObject("score",15));
//删除集合及所有文档
course.drop();<span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">
</span></span>
上面只是介绍了一些简单的操作,具体复杂的查询更新可以根据需求再去查找文档资料。其实,不管操作简单还是复杂,其核心都是对DBObject和DBCollection的操作,主要掌握DBObject如何构造键值对,以及一些条件表达式。
Ⅱ java直接操作mongodb语句
参考如下
public class MongoDBJDBC {
public static void main(String[] args) {
try {
// 实例化Mongo对象,连接27017端口
Mongo mongo = new Mongo("localhost", 27017);
// 连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
DB db = mongo.getDB("test");
// Get collection from MongoDB, database named "yourDB"
// 从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
DBCollection collection = db.getCollection("test1");
// 使用BasicDBObject对象创建一个mongodb的document,并给予赋值。
BasicDBObject document = new BasicDBObject();
//document.put("id", 1001);
//document.put("msg", "hello world mongoDB in Java");
// 将新建立的document保存到collection中去
//collection.insert(document);
// 创建要查询的document
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "chen");
// 使用collection的find方法查找document
DBCursor cursor = collection.find(searchQuery);
// 循环输出结果
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
System.out.println("Hello World");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
}
}
Ⅲ java面试中redis,mongodb类的,会问哪些问题,怎么回答
1、可能会问nosql和关系型数据库的区别:
优点:
1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用Oracle那样花费大量成本购买使用,相比关系型数据库价格便宜
2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库
3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型
4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难
缺点:
1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。
2)不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本
3)不提供关系型数据库对事物的处理
2、介绍下redis和mongodb:
自行google。
3、应用场景:
redis:
a.主要是做热点数据缓存。
b.数据过期处理。
c.消息队列等功能。
d.计数,例如投票等。
mongodb:
mongodb的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。mongo适用于以下场景:
a.网站数据:mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
b.缓存:由于性能很高,mongo也适合作为信息基础设施的缓存层。在系统重启之后,由mongo搭建的持久化缓存可以避免下层的数据源过载。
c.大尺寸、低价值的数据:使用传统的关系数据库存储一些数据时可能会比较贵,在此之前,很多程序员往往会选择传统的文件进行存储。
d.高伸缩性的场景:mongo非常适合由数十或者数百台服务器组成的数据库。
e.用于对象及JSON数据的存储:mongo的BSON数据格式非常适合文档格式化的存储及查询。
4、支持的数据类型:
内容比较多,自行将网上的信息整理一下。
Ⅳ java怎么连接mangodb需要哪些步骤
开发环境:
System:Win7
IDE:eclipse
Database:mongoDB
开发依赖库:
JavaEE5、mongo-2.5.3.jar、junit.jar、org.hamcrest.core_1.1.0.v20090501071000.jar
一、准备工作
1、下载Mongodb对java支持包
jar包下载地址:
mongoDB对Java的相关支持、技术:http://www.mongodb.org/display/DOCS/Java+Language+Center
驱动源码下载:https://download.github.com/mongodb-mongo-java-driver-r2.6.1-7-g6037357.zip
在线查看源码:https://github.com/mongodb/mongo-java-driver
2、下面建立一个JavaProject工程,导入下载下来的驱动包。即可在Java中使用mongoDB,目录如下:
二、Java操作MongoDB示例
在本示例之前你需要启动mongod.exe的服务,启动后,下面的程序才能顺利执行;
1、建立simpleTest.java,完成简单的mongoDB数据库操作
Mongomongo=newMongo();
这样就创建了一个MongoDB的数据库连接对象,它默认连接到当前机器的localhost地址,端口是27017。
DBdb=mongo.getDB(“test”);
这样就获得了一个test的数据库,如果mongoDB中没有创建这个数据库也是可以正常运行的。mongoDB可以在没有创建这个数据库的情况下,完成数据的添加操作。当添加的时候,没有这个库,mongoDB会自动创建当前数据库。
得到了db,下一步我们要获取一个“聚集集合DBCollection”,通过db对象的getCollection方法来完成。
DBCollectionusers=db.getCollection("users");
这样就获得了一个DBCollection,它相当于我们数据库的“表”。
查询所有数据:
DBCursorcur=users.find();
while(cur.hasNext()){
System.out.println(cur.next());
}
完整源码:
packagecom.mongodb;
importjava.net.UnknownHostException;
importcom.mongodb.util.JSON;
publicclasssimpleTest{
publicstaticvoidmain(String[]args)throwsUnknownHostException,MongoException{
Mongomg=newMongo();
//查询所有的Database
for(Stringname:mg.getDatabaseNames()){
System.out.println("dbName:"+name);
}
DBdb=mg.getDB("test");
//查询所有的聚集集合
for(Stringname:db.getCollectionNames()){
System.out.println("collectionName:"+name);
}
DBCollectionusers=db.getCollection("users");
//查询所有的数据
DBCursorcur=users.find();
while(cur.hasNext()){
System.out.println("while="+cur.next());
}
System.out.println("count="+cur.count());
System.out.println("CursorId="+cur.getCursorId());
System.out.println("cur="+JSON.serialize(cur));
}
}
2、完成CRUD操作,首先建立一个curdTset.java,基本测试代码如下:
packagecom.mongodb;
importjava.net.UnknownHostException;
importjava.util.ArrayList;
importjava.util.List;
importorg.bson.types.ObjectId;
importorg.junit.After;
importorg.junit.Before;
importorg.junit.Test;
importcom.mongodb.util.JSON;
publicclasscurdTset{
privateMongomg=null;
privateDBdb;
privateDBCollectionusers;//连接的mongodb数据库
@Before
publicvoidinit(){
System.out.println("TestBefore...");
try{
mg=newMongo();
//mg=newMongo("localhost",27017);
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(MongoExceptione){
e.printStackTrace();
}catch(Exceptione){
e.printStackTrace();
}
//获取testDB;如果默认没有创建,mongodb会自动创建
db=mg.getDB("test");
//获取usersDBCollection;如果默认没有创建,mongodb会自动创建
users=db.getCollection("users");
}
@After
publicvoiddestory(){
System.out.println("TestAfter...");
if(mg!=null){
mg.close();
}
mg=null;
db=null;
users=null;
System.gc();
}
publicvoidprint(Objecto){
System.out.println(o);
}
privatevoidqueryAll(){
print("查询users的所有数据:");
//db游标
DBCursorcur=users.find();
inti=1;
while(cur.hasNext()){
print("记录"+i+":"+cur.next());
i++;
}
}
@Test
publicvoidadd(){
//先查询所有数据
queryAll();
System.out.println("===============================ADDstart=======================================");
print("ADDcount:"+users.count());
DBObjectuser=newBasicDBObject();
user.put("name","hoojo");
user.put("age",24);
user.put("sex","男");
print(users.save(user).getN());
//添加多条数据,传递Array对象
print(users.insert(user,newBasicDBObject("name","tom")).getN());
//添加List集合
Listlist=newArrayList();
list.add(user);
DBObjectuser2=newBasicDBObject("name","lucy");
user.put("age",22);
list.add(user2);
//添加List集合
print(users.insert(list).getN());
//查询下数据,看看是否添加成功
print("count="+users.count());
System.out.println("===============================ADDend=======================================");
//查询所有数据
queryAll();
}
@Test
publicvoidremove(){
queryAll();
print("删除id=4dde2b06feb038463ff09042:"+users.remove(newBasicDBObject("_id",newObjectId("4dde2b06feb038463ff09042"))).getN());
print("removeage>=24:"+users.remove(newBasicDBObject("age",newBasicDBObject("$gte",24))).getN());
System.out.println("===============================REMOVEend=======================================");
//查询所有数据
queryAll();
}
@Test
publicvoidmodify(){
print("修改:"+users.update(newBasicDBObject("_id",newObjectId("4dde25d06be7c53ffbd70906")),newBasicDBObject("age",99)).getN());
print("修改:"+users.update(
newBasicDBObject("_id",newObjectId("4dde2b06feb038463ff09042")),
newBasicDBObject("age",121),
true,//如果数据库不存在,是否添加
false//多条修改
).getN());
print("修改:"+users.update(
newBasicDBObject("name","haha"),
newBasicDBObject("name","dingding"),
true,//如果数据库不存在,是否添加
false//false只修改第一条,true如果有多条就不修改
).getN());
//当数据库不存在就不修改、不添加数据,当多条数据就不修改
//print("修改多条:"+coll.updateMulti(newBasicDBObject("_id",newObjectId("4dde23616be7c19df07db42c")),newBasicDBObject("name","199")));
System.out.println("===============================EDITend=======================================");
//查询所有数据
queryAll();
}
@Test
publicvoidtestOthers(){
//查询所有数据
queryAll();
DBObjectuser=newBasicDBObject();
user.put("name","hoojo");
user.put("age",24);
//JSON对象转换
print("serialize:"+JSON.serialize(user));
//反序列化
print("parse:"+JSON.parse("{"name":"hoojo","age":24}"));
print("判断tempCollection是否存在:"+db.collectionExists("users"));
//如果不存在就创建
if(!db.collectionExists("users")){
DBObjectoptions=newBasicDBObject();
options.put("size",20);
options.put("capped",20);
options.put("max",20);
print(db.createCollection("account",options));
}
//设置db为只读
db.setReadOnly(true);
//只读不能写入数据
db.getCollection("test").save(user);
}
}
Ⅳ 如何用Java操作MongoDB
HelloWorld程序
学习任何程序的第一步,都是编写HelloWorld程序,我们也不例外,看下如何通过Java编写一个HelloWorld的程序。
首先,要通过Java操作Mongodb,必须先下载Mongodb的Java驱动程序,可以在这里下载。
新建立一个Java工程,将下载的驱动程序放在库文件路径下,程序代码如下:
packagecom.mkyong.core;
importjava.net.UnknownHostException;
importcom.mongodb.BasicDBObject;
importcom.mongodb.DB;
importcom.mongodb.DBCollection;
importcom.mongodb.DBCursor;
importcom.mongodb.Mongo;
importcom.mongodb.MongoException;
/**
*Java+MongoDBHelloworldExample
*
*/
publicclassApp{
publicstaticvoidmain(String[]args){
try{
//实例化Mongo对象,连接27017端口
Mongomongo=newMongo("localhost",27017);
//连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
DBdb=mongo.getDB("yourdb");
//GetcollectionfromMongoDB,databasenamed"yourDB"
//从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
DBCollectioncollection=db.getCollection("yourCollection");
//使用BasicDBObject对象创建一个mongodb的document,并给予赋值。
BasicDBObjectdocument=newBasicDBObject();
document.put("id",1001);
document.put("msg","helloworldmongoDBinJava");
//将新建立的document保存到collection中去
collection.insert(document);
//创建要查询的document
BasicDBObjectsearchQuery=newBasicDBObject();
searchQuery.put("id",1001);
//使用collection的find方法查找document
DBCursorcursor=collection.find(searchQuery);
//循环输出结果
while(cursor.hasNext()){
System.out.println(cursor.next());
}
System.out.println("Done");
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(MongoExceptione){
e.printStackTrace();
}
}
}
最后,输出的结果为:
{"_id":{"$oid":"4dbe5596dceace565d229dc3"},
"id":1001,"msg":"helloworldmongoDBinJava"}
Done
在上面的例子中,演示了使用Java对Mongodb操作的重要方法和步骤,首先通过创建Mongodb对象,传入构造函数的参数是Mongodb的数据库所在地址和端口,然后使用
getDB方法获得要连接的数据库名,使用getCollection获得数据集合的名,然后通过新建立BasicDBObject对象去建立document,最后通过collection的insert方法,将建立的document保存到数据库中去。而collection的find方法,则是用来在数据库中查找document。
从Mongodb中获得collection数据集
在Mongodb中,可以通过如下方法获得数据库中的collection:
DBCollectioncollection=db.getCollection("yourCollection");
如果你不知道collection的名称,可以使用db.getCollectionNames()获得集合,然后再遍历,如下:
DBdb=mongo.getDB("yourdb");
Setcollections=db.getCollectionNames();
for(StringcollectionName:collections){
System.out.println(collectionName);
}
完成的一个例子如下:
packagecom.mkyong.core;
importjava.net.UnknownHostException;
importjava.util.Set;
importcom.mongodb.DB;
importcom.mongodb.DBCollection;
importcom.mongodb.Mongo;
importcom.mongodb.MongoException;
/**
*Java:GetcollectionfromMongoDB
*
*/
publicclassGetCollectionApp{
publicstaticvoidmain(String[]args){
try{
Mongomongo=newMongo("localhost",27017);
DBdb=mongo.getDB("yourdb");
Set<String>collections=db.getCollectionNames();
for(StringcollectionName:collections){
System.out.println(collectionName);
}
DBCollectioncollection=db.getCollection("yourCollection");
System.out.println(collection.toString());
System.out.println("Done");
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(MongoExceptione){
e.printStackTrace();
}
}
}
Mongodb中如何插入数据
下面,讲解下如何使用4种方式,将JSON数据插入到Mongodb中去。首先我们准备JSON
格式的数据,如下:
{
"database":"mkyongDB",
"table":"hosting",
"detail":
{
records:99,
index:"vps_index1",
active:"true"
}
}
}
我们希望用不同的方式,通过JAVA代码向Mongodb插入以上格式的JSON数据
第一种方法,是使用BasicDBObject,方法如下代码所示:
BasicDBObjectdocument=newBasicDBObject();
document.put("database","mkyongDB");
document.put("table","hosting");
BasicDBObjectdocumentDetail=newBasicDBObject();
documentDetail.put("records","99");
documentDetail.put("index","vps_index1");
documentDetail.put("active","true");
document.put("detail",documentDetail);
collection.insert(document);
第二种方法是使用BasicDBObjectBuilder对象,如下代码所示:
=BasicDBObjectBuilder.start()
.add("database","mkyongDB")
.add("table","hosting");
Detail=BasicDBObjectBuilder.start()
.add("records","99")
.add("index","vps_index1")
.add("active","true");
documentBuilder.add("detail",documentBuilderDetail.get());
collection.insert(documentBuilder.get());
第三种方法是使用Map对象,代码如下:
MapdocumentMap=newHashMap();
documentMap.put("database","mkyongDB");
documentMap.put("table","hosting");
MapdocumentMapDetail=newHashMap();
documentMapDetail.put("records","99");
documentMapDetail.put("index","vps_index1");
documentMapDetail.put("active","true");
documentMap.put("detail",documentMapDetail);
collection.insert(newBasicDBObject(documentMap));
第四种方法,也就是最简单的,即直接插入JSON格式数据
String json="{'database' : 'mkyongDB','table' : 'hosting',"+
"'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}}";
DBObject dbObject=(DBObject)JSON.parse(json);
collection.insert(dbObject);
这里使用了JSON的parse方法,将解析后的JSON字符串转变为DBObject对象后再直接插入到collection中去。
完整的代码如下所示:
packagecom.mkyong.core;
importjava.net.UnknownHostException;
importjava.util.HashMap;
importjava.util.Map;
importcom.mongodb.BasicDBObject;
importcom.mongodb.BasicDBObjectBuilder;
importcom.mongodb.DB;
importcom.mongodb.DBCollection;
importcom.mongodb.DBCursor;
importcom.mongodb.DBObject;
importcom.mongodb.Mongo;
importcom.mongodb.MongoException;
importcom.mongodb.util.JSON;
/**
* Java MongoDB : Insert a Document
*
*/
publicclass InsertDocumentApp {
publicstaticvoid main(String[] args){
try{
Mongo mongo=newMongo("localhost",27017);
DB db=mongo.getDB("yourdb");
//get a single collection
DBCollection collection=db.getCollection("mmyColl");
//BasicDBObject example
System.out.println("BasicDBObject example...");
BasicDBObject document=newBasicDBObject();
document.put("database","mkyongDB");
document.put("table","hosting");
BasicDBObject documentDetail=newBasicDBObject();
documentDetail.put("records","99");
documentDetail.put("index","vps_index1");
documentDetail.put("active","true");
document.put("detail", documentDetail);
collection.insert(document);
DBCursor cursorDoc=collection.find();
while(cursorDoc.hasNext()){
System.out.println(cursorDoc.next());
}
collection.remove(newBasicDBObject());
//BasicDBObjectBuilder example
System.out.println("BasicDBObjectBuilder example...");
BasicDBObjectBuilder documentBuilder=BasicDBObjectBuilder.start()
.add("database","mkyongDB")
.add("table","hosting");
BasicDBObjectBuilder documentBuilderDetail=BasicDBObjectBuilder.start()
.add("records","99")
.add("index","vps_index1")
.add("active","true");
documentBuilder.add("detail", documentBuilderDetail.get());
collection.insert(documentBuilder.get());
DBCursor cursorDocBuilder=collection.find();
while(cursorDocBuilder.hasNext()){
System.out.println(cursorDocBuilder.next());
}
collection.remove(newBasicDBObject());
//Map example
System.out.println("Map example...");
Map documentMap=newHashMap();
documentMap.put("database","mkyongDB");
documentMap.put("table","hosting");
Map documentMapDetail=newHashMap();
documentMapDetail.put("records","99");
documentMapDetail.put("index","vps_index1");
documentMapDetail.put("active","true");
documentMap.put("detail", documentMapDetail);
collection.insert(newBasicDBObject(documentMap));
DBCursor cursorDocMap=collection.find();
while(cursorDocMap.hasNext()){
System.out.println(cursorDocMap.next());
}
collection.remove(newBasicDBObject());
//JSON parse example
System.out.println("JSON parse example...");
String json="{'database' : 'mkyongDB','table' : 'hosting',"+
"'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}}";
DBObject dbObject=(DBObject)JSON.parse(json);
collection.insert(dbObject);
DBCursor cursorDocJSON=collection.find();
while(cursorDocJSON.hasNext()){
System.out.println(cursorDocJSON.next());
}
collection.remove(newBasicDBObject());
}catch(UnknownHostException e){
e.printStackTrace();
}catch(MongoException e){
e.printStackTrace();
}
}
}
Ⅵ 求教mongodb大神,在java中怎么以时间为条件查询
java操作mongodb进行查询,常用筛选条件的设置如下:条件列表:BasicDBListcondList=newBasicDBList();临时条件对象:BasicDBObjectcond=null;DBCollectioncoll=db.getCollection("A");1、$where在某种应用场合,若要集合A查询文档且要满足文档中某些属性运算结果,可以编写一脚本函数用where进行设置,比如:某集合中存放的用户信息,包括姓名、年龄、手机号、地址等,要筛选出年龄大于20且小于等于40的用户,我们可以这样:StringageStr="function(){returnparseFloat(this.age)>20&&parseFloat(this.age)<=40};";cond=newBasicDBObject();cond.put("$where",ageStr);放入条件列表condList.add(cond);2、$in接1实例中,要查询年龄为23、40、50的用户信息,我们可以这样:创建一个临时的条件列表对象,将条件值分别添加进去BasicDBListvalues=newBasicDBList();values.add(23);values.add(40);values.add(50);cond=newBasicDBObject();cond.put("age",newBasicDBObject("$in",values));放入条件列表condList.add(cond);3、模糊匹配接1实例中,要按照用户的姓名进行模糊查询,如:王,我们可以这样做:使用不区分大小写的模糊查询3.1完全匹配Patternpattern=Pattern.compile("^王$",Pattern.CASE_INSENSITIVE);3.2右匹配Patternpattern=Pattern.compile("^.*王$",Pattern.CASE_INSENSITIVE);3.3左匹配Patternpattern=Pattern.compile("^王.*$",Pattern.CASE_INSENSITIVE);3.4模糊匹配Patternpattern=Pattern.compile("^.*王.*$",Pattern.CASE_INSENSITIVE);cond=newBasicDBObject();cond.put("name",cond);放入条件列表condList.add(cond);4、$gte/$lte/$gt/$lt接1实例中,要筛选出年龄大于20且小于等于40的用户,我们可以这样:cond=newBasicDBObject();cond.append("age",newBasicDBObject("$gt",20));cond.append("age",newBasicDBObject("$lte",40));放入条件列表condList.add(cond);在日常的查询中筛选的条件可能会有多个,而且多个条件之间都是且的关系,结合上例1、2、3、4中将每种条件添加到条件列表中,我可以这样:BasicDBObjectsearchCond=newBasicDBObject();searchCond.put("$and",condList);然后查询数据:DBCursorret=coll.find(searchCond);
Ⅶ 怎么用java代码测试mongo
public static void selectAll() throws Exception{
//第:实例化mongo象连接mongodb服务器 包含所数据库
//默认构造默认连接本机端口号默认27017
//相于Mongo mongo =new Mongo("localhost",27017)
Mongo mongo =new Mongo();
//第二:连接具体数据库
//其参数具体数据库名称若服务器存自创建
DB db=mongo.getDB("myMongo");
//第三:操作具体表
//mongodb没表概念指集合
//其参数数据库表若存自创建
DBCollection collection=db.getCollection("user");
BasicDBList condList = new BasicDBList();
BasicDBObject cond = null;
String ageStr = "function (){return parseFloat(this.id) > 2 && parseFloat(this.id) <= 4};";
cond = new BasicDBObject();
cond.put("$where",ageStr);
Pattern pattern = Pattern.compile("^.*明.*$", Pattern.CASE_INSENSITIVE);
BasicDBObject query =new BasicDBObject();
query.put("name", pattern);
condList.add(query);
condList.add(cond);
BasicDBObject searchCond = new BasicDBObject();
searchCond.put("$or", condList);
//查询操作
DBCursor cursor=collection.find(searchCond);
System.out.println("mongodbuser表结:");
while(cursor.hasNext()){
System.out.println(cursor.next());
}
}