java mongodb 高级查询
来源:互联网 发布:域名已没什么价值 编辑:程序博客网 时间:2024/05/17 17:14
-
-
-
-
- package com.labci.mongodb.test;
- import java.net.UnknownHostException;
- import java.util.Iterator;
- import com.mongodb.BasicDBObject;
- import com.mongodb.DB;
- import com.mongodb.DBCollection;
- import com.mongodb.DBCursor;
- import com.mongodb.DBObject;
- import com.mongodb.Mongo;
- import com.mongodb.MongoException;
-
-
-
-
-
- public class MongoDBAdvancedQuery {
- private static final String HOST = "192.168.1.86";
- private static final int PORT = 27017;
- private static final String USER = "iwtxokhtd";
- private static final String PASSWORD = "123456";
- private static final String DB_NAME = "test";
- private static final String COLLECTION = "data_test";
- private static Mongo conn=null;
- private static DB myDB=null;
- private static DBCollection myCollection=null;
-
- static{
- try {
- conn=new Mongo(HOST,PORT);
- myDB=conn.getDB(DB_NAME);
- boolean loginSuccess=myDB.authenticate(USER, PASSWORD.toCharArray());
- if(loginSuccess){
- myCollection=myDB.getCollection(COLLECTION);
- }
- } catch (UnknownHostException e) {
- e.printStackTrace();
- } catch (MongoException e) {
- e.printStackTrace();
- }
- }
-
-
-
-
-
- private static void queryData(DBCollection collection){
-
- System.out.println("表的总记录数为:");
- System.out.println(collection.find().count());
-
- DBCursor findAll=collection.find();
- DBCursor queryByPage=findAll.skip(3).limit(4);
- printData("从第3条记录起取4条记录为:",queryByPage);
-
- DBObject orderBy = new BasicDBObject();
- orderBy.put("userName", -1);
- DBCursor orderByResult=collection.find().sort(orderBy);
- printData("所有记录按userName倒序排为:",orderByResult);
-
-
- DBObject notEqual=new BasicDBObject();
- notEqual.put("$ne", "Bill Tu10");
-
- DBObject greatThan=new BasicDBObject();
- greatThan.put("$gt", 7);
-
- DBObject notEqualAndGreatThan=new BasicDBObject();
- notEqualAndGreatThan.put("userName", notEqual);
- notEqualAndGreatThan.put("age", greatThan);
-
- DBCursor notEqualAndGreatThanResult=collection.find(notEqualAndGreatThan);
- printData("userName!='Bill Tu10' and age>7的记录为:",notEqualAndGreatThanResult);
-
-
- DBObject greatThanEqualAndLessThanEqual=new BasicDBObject();
- greatThanEqualAndLessThanEqual.put("$gte", 2);
- greatThanEqualAndLessThanEqual.put("$lte", 7);
-
- DBObject ageCompare=new BasicDBObject();
- ageCompare.put("age",greatThanEqualAndLessThanEqual);
-
- DBCursor compareResult=collection.find(ageCompare);
- printData("age>=2 and age<=7的记录为:",compareResult);
-
-
- DBObject all=new BasicDBObject();
- all.put("$all", new Object[]{7,7});
-
- DBObject rankAll=new BasicDBObject();
- rankAll.put("rank", all);
-
- DBCursor rankAllResult=collection.find(rankAll);
- printData("rank in all(7,7)的记录为:",rankAllResult);
-
-
- DBObject notIn=new BasicDBObject();
- notIn.put("$nin", new Object[]{2,3});
-
- DBObject ageNotIn=new BasicDBObject();
- ageNotIn.put("age", notIn);
-
- DBCursor ageNotInResult=collection.find(ageNotIn);
- printData("age not in (2,3)的记录为:",ageNotInResult);
-
-
- DBObject orGreatThan=new BasicDBObject("$gt",3);
- DBObject orRankAll=new BasicDBObject("$all",new Object[]{1,1});
- DBObject ageOrGreatThan=new BasicDBObject();
- ageOrGreatThan.put("age", orGreatThan);
- DBObject rankOrAll=new BasicDBObject();
- rankOrAll.put("rank", orRankAll);
-
- DBObject orOperation=new BasicDBObject();
- orOperation.put("$or", new Object[]{ageOrGreatThan,rankOrAll});
-
- DBCursor orResult=collection.find(orOperation);
- printData("age>3 or rank in all(1,1)的记录为:",orResult);
-
-
- DBObject notOrOperation=new BasicDBObject();
- notOrOperation.put("$nor", new Object[]{ageOrGreatThan,rankOrAll});
-
- DBCursor notOrResult=collection.find(notOrOperation);
- printData("not(age>3 or rank in all(1,1))的记录为:",notOrResult);
-
-
- DBObject size=new BasicDBObject("$size",3);
- DBObject rankSize=new BasicDBObject();
- rankSize.put("rank", size);
-
- DBCursor sizeResult=collection.find(rankSize);
- printData("rank数组大小为3的记录为:",sizeResult);
-
-
- DBObject exists=new BasicDBObject("$exists",false);
- DBObject userNameExists=new BasicDBObject();
- userNameExists.put("userName", exists);
-
- DBCursor userNameExistsResult=collection.find(userNameExists);
- printData("userName exists false的记录为:",userNameExistsResult);
-
-
- DBObject modArray=new BasicDBObject("$mod",new Object[]{2,0});
- DBObject ageMod=new BasicDBObject();
- ageMod.put("age", modArray);
-
- DBCursor ageModResult=collection.find(ageMod);
- printData("age%2==0的记录为:",ageModResult);
-
- }
-
-
-
-
-
-
- private static void printData(String description,DBCursor recordResult){
- System.out.println(description);
- for(Iterator<DBObject> iter=recordResult.iterator();iter.hasNext();){
- System.out.println(iter.next());
- }
- }
-
-
-
-
- public static void main(String[] args) {
- queryData(myCollection);
- }
- }