MongoDB-基本增删改查
MongoDB-基本增删改查
guquanjiang 发表于3年前
MongoDB-基本增删改查
  • 发表于 3年前
  • 阅读 28
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: Mongo DB ,是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式,备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记录都是一个Document对象。Mongo DB最大的优势在于所有的数据持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松的实现CRUD操作。
public class MongoDB001 {

	private Mongo mongo;

	/**
	 * 连接mongodb
	 * @param host
	 * @param port
	 * @throws UnknownHostException
	 */
	public MongoDB001(String host, int port) throws UnknownHostException {
		mongo = new MongoClient(host, port);
	}
	
	/**
	 * 获取DB
	 * @param dbname
	 * @return
	 */
	public DB getDB(String dbname) {
		return mongo.getDB(dbname);
	}
	
	/**
	 * 获取collection,如果不存在,则创建
	 * @param db
	 * @param collectionName
	 * @return
	 */
	public DBCollection getCollection(DB db, String collectionName) {
		if(!db.collectionExists(collectionName)){
			return db.createCollection(collectionName, new BasicDBObject("capped", false).append("size", 1048576));
		}
		return db.getCollection(collectionName);
	}

	/**
	 * 插入数据
	 * @param coll
	 * @return
	 */
	public int insert(DBCollection coll) {
		BasicDBObject doc = new BasicDBObject("name", "MongoDB")
				.append("age", 25).append("province", "上海").append("home", "江西").append("_id", 1);
		WriteResult result = coll.insert(doc);
		return result.getN();
	}
	
	/**
	 * 更新数据
	 * @param coll
	 * @param id
	 */
	public void update(DBCollection coll, int id){
		DBObject o = coll.findOne(new BasicDBObject("_id", id));
		coll.update(new BasicDBObject("_id", id), new BasicDBObject("province", "湖南").append("name", o.get("name"))
				.append("age", o.get("age")).append("home", o.get("home")));
	}
	
	/**
	 * 批量插入
	 * @param coll
	 * @return
	 */
	public int bulkInsert(DBCollection coll){
		BulkWriteOperation builder = coll.initializeOrderedBulkOperation();
		BasicDBObject object = null;
		for(int i = 1;i<100; i++){
			object = new BasicDBObject("_id",i);
			builder.insert(object.append("name", "测试"+i).append("age", i).append("province", "上海").append("home", "上海"));
		}
		BulkWriteResult result = builder.execute();
		return result.getInsertedCount();
	}
	
	/**
	 * 游标查询
	 * @param coll
	 */
	public void query(DBCollection coll){
		DBCursor cursor = coll.find(new BasicDBObject("id", 2).append("type", "database"));
		try{
			while (cursor.hasNext()) {
				System.out.println(cursor.next().get("_id"));
			}
		}finally{
			cursor.close();
		}
	}
	/**
	 * 删除DB
	 * @param dbName
	 */
	public void dropDatabase(String dbName){
		mongo.dropDatabase(dbName);
	}
	
	/**
	 * 删除collection
	 * @param coll
	 */
	public void dropCollection(DBCollection coll){
		coll.drop();
	}
	
	/**
	 * 根据id,删除数据
	 * @param coll
	 * @param id
	 * @return
	 */
	public int delete(DBCollection coll, int id){
		return coll.remove(new BasicDBObject().append("_id", id)).getN();
	}
	
	
	public void parallelScanOptions(DBCollection coll){
		ParallelScanOptions options = ParallelScanOptions.builder().batchSize(2).numCursors(2).build();
		List<Cursor> list = coll.parallelScan(options);
		for(Cursor cursor : list){
			while(cursor.hasNext()){
				System.out.println(cursor.next());
			}
		}
	}
}



标签: mongodb nosql
共有 人打赏支持
粉丝 4
博文 10
码字总数 9544
×
guquanjiang
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: