加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

NoSql之MongoDB的常用类管理

发布时间:2020-12-13 13:50:44 所属栏目:百科 来源:网络整理
导读:1、DBCollection的管理 package com.boonya.mongo;import java.util.Set;import com.mongodb.DBCollection;public class CollectionManager { public static DBCollection getDbCollection(String collectionName){ return DBConnection.getInstance().getCo

1、DBCollection的管理

package com.boonya.mongo;
import java.util.Set;
import com.mongodb.DBCollection;
public class CollectionManager {
 
 public static DBCollection  getDbCollection(String collectionName){
  return DBConnection.getInstance().getCollection(collectionName.equals("")?"myCollection":collectionName);
 }
 
 public String getCollectionNames(){
  String strNames="";
  Set<String> colls =DBConnection.getInstance().getCollectionNames();
  for (String cname : colls) {
   strNames+=cname+",";
  }
  return strNames;
 }

}

2、并发操作管理

package com.boonya.mongo;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.WriteConcern;

public class ConcurrencyManager {
 
 private static DBCollection coll= CollectionManager.getDbCollection("myCollection");
 
 /**
  * If you want to ensure complete consistency in a “session” (maybe an http request),* you would want the driver to use the same socket,which you can achieve by using a
  * “consistent request”. Call requestStart() before your operations and requestDone()
  * to release the connection back to the pool:
  * DB and DBCollection are completely thread safe. In fact,they are cached so you get
  * the same instance no matter what
  */
 public void insertData(){
  DB db=DBConnection.getInstance();
  db.requestStart();
  try {
   db.requestEnsureConnection();
   //do something
  } finally {
   db.requestDone();
  }

 }
 
 /**
  * Since by default a connection is given back to the pool after each request,you may 
  * wonder how calling getLastError() works after a write. You should actually use a 
  * write concern like WriteConcern.SAFE instead of calling getLastError() manually. 
  * The driver will then call getLastError() before putting the connection back in the pool.
  * 
  * WriteConcern.NONE            No exceptions thrown. 
     * WriteConcern.NORMAL          Exceptions are only thrown when the primary node is unreachable for
     *                              a read,or the full replica set is unreachable. 
     * WriteConcern.SAFE            Same as the above,but exceptions thrown when there is a server error
     *                              on writes or reads. Calls getLastError(). 
     * WriteConcern.REPLICAS_SAFE   Tries to write to two separate nodes. Same as the above,but
     *                              will throw an exception if two writes are not possible. 
     * WriteConcern.FSYNC_SAFE      Same  as WriteConcern.SAFE,but also waits for write to be written to disk. 
     *
  */
 public void writeConcern(){
  coll.insert(new BasicDBObject("name","boonya").append("age",21),WriteConcern.SAFE);

  // is equivalent to

  DB db=DBConnection.getInstance();
  DBCollection coll=CollectionManager.getDbCollection("myCollection");
  db.requestStart();
  try {
     coll.insert(new BasicDBObject("name",21));
     DBObject err = db.getLastError();
     System.out.println(err);
  } finally {
     db.requestDone();
  }

 }

}

3、数据库管理

package com.boonya.mongo;
import java.net.UnknownHostException;
import com.mongodb.MongoClient;
public class DatabaseManager {
 
 public String getDatabaseNames() throws UnknownHostException{
  String strNames="";
  MongoClient mongoClient;
  mongoClient = new MongoClient();
  for (String name : mongoClient.getDatabaseNames()) {
     strNames+=name+",";
  }
  return strNames;
 }
 
 public void  dropDatabase(String databaseName) throws UnknownHostException{
      MongoClient mongoClient = new MongoClient();
      mongoClient.dropDatabase(databaseName);
 }

}

4、文档管理

package com.boonya.mongo;
import java.util.ArrayList;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
public class DocumentManager {
 
 private static DBCollection coll= CollectionManager.getDbCollection("myCollection");
 
 public void insertADocument(){
  BasicDBObject doc = new BasicDBObject("name","MongoDB").append("type","database")
   .append("count",1)
   .append("info",new BasicDBObject("x",203).append("y",102));
         coll.insert(doc);
 }
 
 /**
  * PRINT BELOW:
  * { "_id" : "49902cde5162504500b45c2c",* "name" : "MongoDB",* "type" : "database",*  "count" : 1,*  "info" : { "x" : 203,"y" : 102}}
  * @return
  */
 public DBObject findTheFirstDocument(){
  System.out.println("collection count:"+coll.getCount());
  DBObject myDoc = coll.findOne();
  System.out.println(myDoc);
        return myDoc;
 }
 
    public List<DBObject> getADocumentsByCursor(){
     List<DBObject> docs=new ArrayList<DBObject>();
     DBCursor cursor =coll.find();
     try {
        while(cursor.hasNext()) {
         DBObject obj=cursor.next();
            System.out.println(obj);
            docs.add(obj);
        }
        return docs;
     } finally {
        cursor.close();
     }
 }
    
    /**
     * PRINT LIKE THIS:
     * { "_id" : "49903677516250c1008d624e","i" : 71 }
     */
    public void queryADocument(){
     BasicDBObject query = new BasicDBObject("i",71);
     DBCursor cursor =coll.find();
     cursor = coll.find(query);
     try {
        while(cursor.hasNext()) {
            System.out.println(cursor.next());
        }
     } finally {
        cursor.close();
     }
    }
    
    public void  editQueryRegular(){
     //db.things.find({j: {$ne: 3},k: {$gt: 10} });
     BasicDBObject query = new BasicDBObject("j",new BasicDBObject("$ne",3)
            .append("k",new BasicDBObject("$gt",10)));
     DBCursor cursor = coll.find(query);
        try {
         while(cursor.hasNext()) {
           System.out.println(cursor.next());
            }
        } finally {
         cursor.close();
        }
    }
    
    public void getAsetDocument(){
     BasicDBObject query = new BasicDBObject("i",50));  // e.g. find all where i > 50
//     query = new BasicDBObject("i",20).
//                append("$lte",30));  // i.e.   20 < i <= 30
     DBCursor  cursor = coll.find(query);
     try {
        while(cursor.hasNext()) {
            System.out.println(cursor.next());
        }
     } finally {
        cursor.close();
     }
    }
 

}

5、索引管理

package com.boonya.mongo;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;

public class IndexManager {

  private static DBCollection coll= CollectionManager.getDbCollection("myCollection");

  public void createIndex(){
    // create index on "i",ascending
    coll.createIndex(new BasicDBObject("i",1));
  }

  public List<DBObject> getIndexList(){
    List<DBObject> list = coll.getIndexInfo();
    for (DBObject o : list) {
       System.out.println(o);
       list.add(o);
    }
    return list;
  }

}

6、预读取机制

package com.boonya.mongo;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.ReadPreference;
public class ReadPreferences {

  private static DBCollection coll= CollectionManager.getDbCollection("myCollection");

 /**
  * ReadPreference.primary();
  * ReadPreference.primaryPreferred();
  * ReadPreference.secondary();
  * ReadPreference.secondaryPreferred();
  * ReadPreference.nearest();
  */
  public void read(){
    DBObject query = new BasicDBObject("name","simple doc");

    //Read from primary if available,otherwise a secondary.
    ReadPreference preference = ReadPreference.primaryPreferred();
    DBCursor cur = new DBCursor(coll,query,(DBObject) preference);

    //Read from any member node from the set of nodes which respond the fastest. 
    //The responsiveness of a node is measured with pings. Any node whose ping 
    //time is within 15 milliseconds of the node with the lowest ping time is considered near.
    DBObject result =coll.findOne(query,(DBObject) ReadPreference.nearest());


    // initialize a properly tagged read preference
    ReadPreference tagged_pref =ReadPreference.secondaryPreferred(new BasicDBObject("datacenter","Los Angeles"));

    // include the tagged read preference in this request}}
    DBObject result1=coll.findOne(new BasicDBObject("name","simple doc"),(DBObject) tagged_pref);

    // read from either LA or US_West
    DBObject tagSetOne = new BasicDBObject("datacenter","Los Angeles");
    DBObject tagSetTwo = new BasicDBObject("region","US_West");
    ReadPreference pref =ReadPreference.primaryPreferred(tagSetOne,tagSetTwo);

 }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读