MongoDB基于Morphia (二)demo 包含聚合汇总 多条件查询

MongoDB基础语句

注:新增字段 也是用其中的set 但是确保实体类中有新增的属性(使用morphia)

例如::
books是表名 “book_serial_num” : “B1013687616857538560” 为筛选条件
mongo中语句
新增字段 如果原来有这个字段就是更新
db.getCollection(‘books’).update({“book_serial_num” : “B1013687616857538560”},{"$set" : {“test2”:“33”}})

查找
db.getCollection(‘books’).find({“book_serial_num” : “B1013687616857538560”})

删除:删除test2的字段 后面必须为“”
db.getCollection(‘books’).update({“book_serial_num” : “B1013687616857538560”},{"$unset" : {“test2”:""}})

详细方法demo
更新操作:

 @Override
    public void updateTitle(String book_serial_num, String main_title) {
        FieldFilter filter = new FieldFilter(MonthlyPaymentActivityBooks.BOOK_SERIAL_NUM, FilterOp.EQ, book_serial_num);
        FieldFilter[] params = new FieldFilter[]{filter};
        Query<MonthlyPaymentActivityBooks> query = this.getDao().createQuery();
        for (FieldFilter filter1: params) {
            query.filter(filter1.getField()+filter1.getOperator().getOperator(),filter1.getValue());
        }
        UpdateOperations<MonthlyPaymentActivityBooks> ops = this.getDao().getDs().createUpdateOperations(MonthlyPaymentActivityBooks.class).set(MonthlyPaymentActivityBooks.MAIN_TITLE, main_title);

        getDao().update(query,ops);
    }

聚合汇总操作
方式一

/**
其中paramMap 为 条件    codes为要汇总的字段名
*/
 @Override
    public Map<String,LinkedHashMap<String,Double>> getTotalBy(Map<String,Object> paramMap, String... codes) {

        StringBuffer map = new StringBuffer();
        map.append("function() {");
        map.append("  var value ={");
        for(int i=0;i<codes.length;i++){
            if(i>0){
                map.append(",");
            }
            map.append(codes[i]).append(":this.").append(codes[i]);

        }
        map.append("};");
        map.append("emit(this.book_serial_num,value); ");
        map.append("}");

        StringBuffer reduce = new StringBuffer();
        reduce.append("function(key,values) {");
        reduce.append("  var 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值