① 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();
}
}
}
② 高手帮帮忙,我刚接触mongodb,怎么用java对mongodb数据库进行多条件查询,先谢谢了
package maven.demo.test;
import java.util.ArrayList;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.QueryOperators;
public class MongoDB {
private static void print(String str){
System.out.println(str);
}
public static void main(String[] args) {
try {
//创建连接
Mongo m=new Mongo("127.0.0.1", 27017);
//得到数据库
DB db=m.getDB("test");
//得到所有数据库
// List<String> colls=m.getDatabaseNames();
// for(String str:colls){
// System.out.println(str);
// }
// //得到所有的集合(表)
// for(String collection:db.getCollectionNames()){
// System.out.println(collection);
// }
//删除一个数据库
//m.dropDatabase("sun");
//得到sun表
DBCollection coll=db.getCollection("things");
//查看一个表的索引
// for(DBObject index:coll.getIndexInfo()){
// System.out.println(index);
// }
// DBObject myDoc=coll.findOne();
// System.out.println(myDoc);
//添加
// BasicDBObject doc=new BasicDBObject();
// doc.put("name", "sunshan");
// doc.put("sex", "男");
// doc.put("age", 22);
//coll.insert(doc);
//删除
//coll.remove(doc);
// BasicDBObject doc1=new BasicDBObject();
// doc1.put("i", 0);
// doc1.put("j", "foo");
// BasicDBObject doc2=new BasicDBObject();
// doc2.put("hello", "world");
// doc1.put("doc2", doc2);
// coll.insert(doc1);
//修改
// BasicDBObject doc3=new BasicDBObject();
// doc3.put("x", 6);
// BasicDBObject doc4=new BasicDBObject();
// doc4.put("x", 1);
// coll.update(doc3, doc4,true,false);
//如果数据库不存在就添加 |多条修改 false只修改第一天,true如果有多条就不修改
//条件查询
//System.out.println(coll.find(doc4));
//coll.findAndRemove(doc4);
// //批量插入
// List<DBObject> datas=new ArrayList<DBObject>();
// for(int i=0;i<10;i++){
// BasicDBObject bd=new BasicDBObject();
// bd.put("name", "data");
// bd.append("age", i);
// datas.add(bd);
// }
// coll.insert(datas);
//添加
// BasicDBObjectBuilder documentBuilder = BasicDBObjectBuilder.start();
// documentBuilder.add("database", "mkyongDB");
// documentBuilder.add("table", "hosting");
// BasicDBObjectBuilder documentBuilderDetail = BasicDBObjectBuilder.start();
// documentBuilderDetail.add("records", "99");
// documentBuilderDetail.add("index", "vps_index1");
// documentBuilderDetail.add("active", "true");
// documentBuilder.add("detail", documentBuilderDetail.get());
// coll.insert(documentBuilder.get());
//添加
// Map<Object,Object> map=new HashMap<Object,Object>();
// map.put("a", 1);
// map.put("b", "b");
// coll.insert(new BasicDBObject(map));
//添加
// String json ="{'1' : '1','2' : '2',"+"'11' : {'1' : 1, '2' : '2', '3' : '3'}}";
// DBObject dbobject=(DBObject)JSON.parse(json);
// coll.insert(dbobject);
//更新
// BasicDBObject bdo=new BasicDBObject();
// bdo.put("x", 11);
// coll.update(new BasicDBObject().append("x", 0), bdo);
//更新
// BasicDBObject bdo=new BasicDBObject().append("$inc", new BasicDBObject().append("x", 12));
// coll.update(new BasicDBObject().append("x", 11), bdo);
//更新
//如果不使用$set 直接是 age则所有的都会更新
//根据age为9条件把name:data修改为 name:sun
// BasicDBObject bdo=new BasicDBObject().append("$set", new BasicDBObject().append("name", "sunshan"));
// coll.update(new BasicDBObject().append("age", 9), bdo);
//更新
//根据name为data条件把age:批量修改为 age:age
// BasicDBObject bdo=new BasicDBObject().append("$set", new BasicDBObject().append("age", "age"));
// coll.update(new BasicDBObject().append("name", "data"), bdo,false, true);
//查询age=1
// print("find:"+coll.find(new BasicDBObject("age", 1)).toArray());
//查询age<=1
// print("find: "+coll.find(new BasicDBObject("age", new BasicDBObject("$lte", 1))).toArray());
//查询age>=1
// print("fint: "+coll.find(new BasicDBObject("age", new BasicDBObject("$gte", 1))).toArray());
//查询age!=1
// print("fint: "+coll.find(new BasicDBObject("age", new BasicDBObject("$ne", 1))).toArray());
//查询age=1,2,3
// print("fint: "+coll.find(new BasicDBObject("age", new BasicDBObject(QueryOperators.IN ,new int[]{1,2,3}))).toArray());
//查询age!=1,2,3
// print("find: "+coll.find(new BasicDBObject("age" ,new BasicDBObject(QueryOperators.NIN ,new int[]{1,2,3}))).toArray());
// print("find: "+coll.find(new BasicDBObject("age" ,new BasicDBObject(QueryOperators.EXISTS ,true))).toArray());
//查询age属性
// print("find: "+coll.find(null ,new BasicDBObject("age" ,true)).toArray());
// List<DBObject> list=coll.find().toArray();
// for(Object obj:list){
// System.out.println(obj);
// }
//true查询出来存在的 /false 查询出来不存在的
//print(""+coll.find(new BasicDBObject("y",new BasicDBObject(QueryOperators.EXISTS,false))).toArray());
// DBObject dbc=new BasicDBObject();
// dbc.put("name", 1111);
// List<DBObject> list=new ArrayList<DBObject>();
// list.add(dbc);
// System.out.println(coll.insert(list).getN());
// //查询部分数据块
// DBCursor cursor=coll.find().skip(1);
// while(cursor.hasNext()){
// System.out.println(cursor.next());
// }
// DBCursor cur=coll.find(); //DBCursor cur=coll.find().limit(2);
// while(cur.hasNext()){
// System.out.println(cur.next());
// }
//System.out.println(cur.getCursorId()+" "+cur.count()+" "+JSON.serialize(cur));
//条件查询
BasicDBObject doc5=new BasicDBObject();
doc5.put("$gt", 1);
doc5.put("$lt", 3);
print("find 21<y<23:"+coll.find(new BasicDBObject("y", doc5)).toArray());
// BasicDBObject doc5=new BasicDBObject();
// doc5.put("$gt", 1);
// doc5.put("$lt", 3);
// BasicDBObject doc6=new BasicDBObject();
// doc6.put("x", doc5);
// System.out.println(coll.find(doc6));
} catch (Exception e) {
e.printStackTrace();
}
}
}
③ Java对mongodb进行正则查询
用Java实现MongoDB正则查询小技巧:
//模糊查询
private BasicDBObject getLikeStr(String findStr) {
Pattern pattern = Pattern.compile("^.*" + findStr + ".*$", Pattern.CASE_INSENSITIVE);
return new BasicDBObject("$regex", pattern);
}
DBObject query = new BasicDBObject();
query.put("real_name", getLikeStr(userName));
//endWith文件扩展名
private BasicDBObject endWithStr(String findStr) {
Pattern pattern = Pattern.compile(findStr + "$", Pattern.MULTILINE);
return new BasicDBObject("$regex", pattern);
}
DBObject query = new BasicDBObject();
query.put("filename", endWithStr(“.pdf”));
④ java mongodb多条件分组
//首先利$match筛选出where条件此处看你的查询范围条件了
BasicDBObject[]array={newBasicDBObject("startTimeLong",newBasicDBObject("$gte",beginTime)),
newBasicDBObject("startTimeLong",newBasicDBObject("$lt",endTime))};
BasicDBObjectcond=newBasicDBObject();
cond.put("$and",array);
DBObjectmatch=newBasicDBObject("$match",cond);
//利用$project拼装group需要的数据,包含name列、age列
DBObjectfields=newBasicDBObject("name",1);
fields.put("age",1);
DBObjectproject=newBasicDBObject("$project",fields);
//利用$group进行分组
DBObject_group=newBasicDBObject("name","$name");
_group.put("age","$age");
DBObjectgroupFields=newBasicDBObject("_id",_group);
//总数
groupFields.put("count",newBasicDBObject("$sum",1));
DBObjectgroup=newBasicDBObject("$group",groupFields);
AggregationOutputoutput=MongodbUtil.getLogInfoCollection().aggregate(match,project,group);