All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nutz.mongo.ZMoDB Maven / Gradle / Ivy

package org.nutz.mongo;

import java.util.Set;

import org.nutz.lang.Lang;

import com.mongodb.DB;

/**
 * 对于 DB 对象的薄封装
 * 
 * @author zozoh([email protected])
 */
public class ZMoDB {

    private DB db;

    public ZMoDB(DB db) {
        this.db = db;
    }

    /**
     * 获取集合,如果集合不存在,则抛错
     * 
     * @param name
     *            集合名称
     * @return 集合薄封装
     */
    public ZMoCo c(String name) {
        if (!db.collectionExists(name))
            throw Lang.makeThrow("Colection noexitst: %s.%s", db.getName(), name);
        return new ZMoCo(db.getCollection(name));
    }

    /**
     * 获取一个集合,如果集合不存在,就创建它
     * 
     * @param name
     *            集合名
     * @param dropIfExists
     *            true 如果存在就清除
     * @return 集合薄封装
     */
    public ZMoCo cc(String name, boolean dropIfExists) {
        // 不存在则创建
        if (!db.collectionExists(name)) {
            return createCollection(name, null);
        }
        // 固定清除
        else if (dropIfExists) {
            db.getCollection(name).drop();
            return createCollection(name, null);
        }
        // 已经存在
        return new ZMoCo(db.getCollection(name));
    }

    /**
     * 是否存在某个集合
     * 
     * @param name
     *            集合名
     * @return 是否存在
     */
    public boolean cExists(String name) {
        return db.collectionExists(name);
    }

    /**
     * 创建一个集合
     * 
     * @param name
     *            集合名
     * @param options
     *            集合配置信息
     * @return 集合薄封装
     */
    public ZMoCo createCollection(String name, ZMoDoc options) {
        if (db.collectionExists(name)) {
            throw Lang.makeThrow("Colection exitst: %s.%s", db.getName(), name);
        }

        // 创建默认配置信息
        if (null == options) {
            options = ZMoDoc.NEW("capped:false");
        }

        return new ZMoCo(db.createCollection(name, options));
    }

    /**
     * 清除数据库的游标
     * 
     * @param force
     *            是否强制
     */
    @Deprecated
    public void cleanCursors(boolean force) {
        //db.cleanCursors(force);
    }

    /**
     * @return 当前数据库所有可用集合名称
     */
    public Set cNames() {
        return db.getCollectionNames();
    }

    public DB getNativeDB() {
        return this.db;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy