Search in sources :

Example 36 with BSONObject

use of org.bson.BSONObject in project Mycat-Server by MyCATApache.

the class SequoiaSQLParser method UpData.

private int UpData(SQLUpdateStatement state) {
    SQLTableSource table = state.getTableSource();
    DBCollection coll = this._db.getCollection(table.toString());
    SQLExpr expr = state.getWhere();
    BSONObject query = parserWhere(expr);
    BasicBSONObject set = new BasicBSONObject();
    for (SQLUpdateSetItem col : state.getItems()) {
        set.put(getFieldName2(col.getColumn()), getExpValue(col.getValue()));
    }
    BSONObject mod = new BasicBSONObject("$set", set);
    //coll.updateMulti(query, mod);
    coll.update(query, mod, null);
    //System.out.println("changs count:"+coll.getStats().size());
    return 1;
}
Also used : DBCollection(com.sequoiadb.base.DBCollection) BasicBSONObject(org.bson.BasicBSONObject) BasicBSONObject(org.bson.BasicBSONObject) BSONObject(org.bson.BSONObject) SQLExpr(com.alibaba.druid.sql.ast.SQLExpr)

Example 37 with BSONObject

use of org.bson.BSONObject in project Mycat-Server by MyCATApache.

the class SequoiaSQLParser method DeleteDate.

private int DeleteDate(SQLDeleteStatement state) {
    SQLTableSource table = state.getTableSource();
    DBCollection coll = this._db.getCollection(table.toString());
    SQLExpr expr = state.getWhere();
    if (expr == null) {
        throw new RuntimeException("not where of sql");
    }
    BSONObject query = parserWhere(expr);
    //coll.remove(query);
    coll.delete(query);
    return 1;
}
Also used : DBCollection(com.sequoiadb.base.DBCollection) BasicBSONObject(org.bson.BasicBSONObject) BSONObject(org.bson.BSONObject) SQLExpr(com.alibaba.druid.sql.ast.SQLExpr)

Example 38 with BSONObject

use of org.bson.BSONObject in project Mycat-Server by MyCATApache.

the class SequoiaSQLParser method query.

public SequoiaData query() throws SequoiaSQLException {
    if (!(statement instanceof SQLSelectStatement)) {
        //return null;
        throw new IllegalArgumentException("not a query sql statement");
    }
    SequoiaData mongo = new SequoiaData();
    DBCursor c = null;
    SQLSelectStatement selectStmt = (SQLSelectStatement) statement;
    SQLSelectQuery sqlSelectQuery = selectStmt.getSelect().getQuery();
    int icount = 0;
    if (sqlSelectQuery instanceof MySqlSelectQueryBlock) {
        MySqlSelectQueryBlock mysqlSelectQuery = (MySqlSelectQueryBlock) selectStmt.getSelect().getQuery();
        BasicBSONObject fields = new BasicBSONObject();
        //显示的字段
        for (SQLSelectItem item : mysqlSelectQuery.getSelectList()) {
            //System.out.println(item.toString());
            if (!(item.getExpr() instanceof SQLAllColumnExpr)) {
                if (item.getExpr() instanceof SQLAggregateExpr) {
                    SQLAggregateExpr expr = (SQLAggregateExpr) item.getExpr();
                    if (expr.getMethodName().equals("COUNT")) {
                        icount = 1;
                        mongo.setField(getExprFieldName(expr), Types.BIGINT);
                    }
                    fields.put(getExprFieldName(expr), Integer.valueOf(1));
                } else {
                    fields.put(getFieldName(item), Integer.valueOf(1));
                }
            }
        }
        //表名
        SQLTableSource table = mysqlSelectQuery.getFrom();
        DBCollection coll = this._db.getCollection(table.toString());
        mongo.setTable(table.toString());
        SQLExpr expr = mysqlSelectQuery.getWhere();
        BSONObject query = parserWhere(expr);
        //System.out.println(query);
        SQLSelectGroupByClause groupby = mysqlSelectQuery.getGroupBy();
        BasicBSONObject gbkey = new BasicBSONObject();
        if (groupby != null) {
            for (SQLExpr gbexpr : groupby.getItems()) {
                if (gbexpr instanceof SQLIdentifierExpr) {
                    String name = ((SQLIdentifierExpr) gbexpr).getName();
                    gbkey.put(name, Integer.valueOf(1));
                }
            }
            icount = 2;
        }
        int limitoff = 0;
        int limitnum = 0;
        if (mysqlSelectQuery.getLimit() != null) {
            limitoff = getSQLExprToInt(mysqlSelectQuery.getLimit().getOffset());
            limitnum = getSQLExprToInt(mysqlSelectQuery.getLimit().getRowCount());
        }
        SQLOrderBy orderby = mysqlSelectQuery.getOrderBy();
        BasicBSONObject order = new BasicBSONObject();
        if (orderby != null) {
            for (int i = 0; i < orderby.getItems().size(); i++) {
                SQLSelectOrderByItem orderitem = orderby.getItems().get(i);
                order.put(orderitem.getExpr().toString(), Integer.valueOf(getSQLExprToAsc(orderitem.getType())));
            }
        //  c.sort(order); 
        // System.out.println(order);
        }
        if (icount == 1) {
            mongo.setCount(coll.getCount(query));
        } else if (icount == 2) {
            BasicBSONObject initial = new BasicBSONObject();
            initial.put("num", 0);
            String reduce = "function (obj, prev) { " + "  prev.num++}";
        //mongo.setGrouyBy(coll.group(gbkey, query, initial, reduce));			
        } else {
            if ((limitoff > 0) || (limitnum > 0)) {
                //.skip(limitoff).limit(limitnum);
                c = coll.query(query, fields, order, null, limitoff, limitnum);
            } else {
                c = coll.query(query, fields, order, null, 0, -1);
            }
        }
        mongo.setCursor(c);
    }
    return mongo;
}
Also used : BasicBSONObject(org.bson.BasicBSONObject) BSONObject(org.bson.BSONObject) MySqlSelectQueryBlock(com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock) SQLExpr(com.alibaba.druid.sql.ast.SQLExpr) BasicBSONObject(org.bson.BasicBSONObject) DBCollection(com.sequoiadb.base.DBCollection) DBCursor(com.sequoiadb.base.DBCursor)

Example 39 with BSONObject

use of org.bson.BSONObject in project immutables by immutables.

the class BsonEncoding method unwrapBsonable.

/**
   * Although it may seem that re-parsing is bizarre, but it is one [of not so many] ways to do
   * proper marshaling. This kind of inefficiency will only hit query constraints that have many
   * object with custom marshaling, which considered to be a rare case.
   * @param adapted adapted value that know how to write itself to {@link JsonWriter}
   * @return object converted to MongoDB driver's {@link BSONObject}.
   */
public static Object unwrapBsonable(Support.Adapted<?> adapted) {
    try {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        BsonGenerator generator = BSON_FACTORY.createGenerator(outputStream);
        BsonWriter writer = new BsonWriter(generator);
        writer.beginObject().name(PREENCODED_VALUE_WRAPPER_FIELD_NAME);
        adapted.write(writer);
        writer.endObject();
        writer.close();
        BSONObject object = new BasicBSONDecoder().readObject(outputStream.toByteArray());
        return object.get(PREENCODED_VALUE_WRAPPER_FIELD_NAME);
    } catch (IOException ex) {
        throw Throwables.propagate(ex);
    }
}
Also used : BSONObject(org.bson.BSONObject) BsonGenerator(de.undercouch.bson4jackson.BsonGenerator) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IOException(java.io.IOException) BasicBSONDecoder(org.bson.BasicBSONDecoder)

Example 40 with BSONObject

use of org.bson.BSONObject in project Mycat-Server by MyCATApache.

the class SequoiaData method setGrouyBy.

public void setGrouyBy(BSONObject gb) {
    this.groupby = gb;
    this.type = true;
    if (gb instanceof BasicBSONList) {
        Object gb2 = ((BasicBSONList) gb).get(0);
        if (gb2 instanceof BSONObject) {
            for (String field : ((BSONObject) gb2).keySet()) {
                Object val = ((BSONObject) gb2).get(field);
                setField(field, getObjectToType(val));
            }
        }
    }
}
Also used : BasicBSONList(org.bson.types.BasicBSONList) BasicBSONObject(org.bson.BasicBSONObject) BSONObject(org.bson.BSONObject) BasicBSONObject(org.bson.BasicBSONObject) BSONObject(org.bson.BSONObject)

Aggregations

BSONObject (org.bson.BSONObject)66 BasicBSONObject (org.bson.BasicBSONObject)31 BasicDBObject (com.mongodb.BasicDBObject)19 DBObject (com.mongodb.DBObject)10 IOException (java.io.IOException)10 ArrayList (java.util.ArrayList)6 LazyBSONObject (org.bson.LazyBSONObject)5 SQLExpr (com.alibaba.druid.sql.ast.SQLExpr)4 BSONFileSplit (com.mongodb.hadoop.input.BSONFileSplit)4 BSONWritable (com.mongodb.hadoop.io.BSONWritable)4 DBCollection (com.sequoiadb.base.DBCollection)4 Map (java.util.Map)4 ObjectId (org.bson.types.ObjectId)4 DBRef (com.mongodb.DBRef)3 ByteArrayInputStream (java.io.ByteArrayInputStream)3 Date (java.util.Date)3 HashMap (java.util.HashMap)3 List (java.util.List)3 Configuration (org.apache.hadoop.conf.Configuration)3 Tuple (org.apache.pig.data.Tuple)3