mongo的一些用法

1.同一个mongo不同数据库的表的拷贝
db.yc_order.find().forEach(function(d){ db.getSiblingDB('insurance-alltrust')['yc_order'].insert(d); });

 

2.不同mongo的库拷贝同一个mongo也可以直接拷贝库

db.copyDatabase("insurance-alltrust","insurance-anxin","localhost");   

 

3.字段是否存在的java用法

MongoBaseDao.findList("travel_poi", new Document("nation",new Document("$exists",false)));

 

4.数组查询:

条件可以直接为 ‘citys’:'北京市' 或者是 ‘citys’:['北京市','上海市']

 

5.数据导出csv格式:

mongoexport --type=csv -d insurance -c travle_poi -q "{'realtime' : '20161109'}" -o acc.dat -f areaId,cityId,proviceId,timeType,realtime,forcasttime,data.rain,data.t_max

 

6.数据导入csv:

mongoimport -d insurance-alltrust -c hlg_city_b --type csv -f "month,value,value2,city,timeType" hlg_city_b

 

7.整体更新:

.update({name:'武汉'},{$set:{name:'武汉欢乐谷'}},{multi:true});

 

8.条件查询:(大小与):

new Document("washcar.begin", new Document("$lte", begin).append("$lt", today)) 大小与

 

9.空间索引:

1).球面索引

db.station.ensureIndex({loc:"2dsphere"},{unique:true, dropDups:true})

db.station.find( { loc : { $near : { $geometry :   { type : "Point" , coordinates : [20 , 108] } , $maxDistance : 1000000  } } } )

 

2).平面索引

db.station.ensureIndex({loc:"2d"},{unique:true, dropDups:true})

db.station.find( { loc : { $near : [20 , 108] } } )

 

 

 

10 排序:

sort 方法 中 字段1代表正序  -1是逆序

new Document("washcar.begin", new Document("$lte", begin).append("$lt", today)) 大小与

 

11 $in查询的数组表示方法

 Java中用$in查询的时候 数组用 Arrays.asList(10,20,30)来定义....

 

12.mongo的账号密码java

       ServerAddress sa = new ServerAddress(ip, port);  
        List<MongoCredential> mongoCredentialList = new ArrayList<MongoCredential>();  
        mongoCredentialList.add(MongoCredential.createCredential( username,db, password.toCharArray()));  

        MongoClient client = new MongoClient(sa, mongoCredentialList);

记得eclipse用jre不要用jdk

 

13.mongo java 代码更新的时候碰到Can't find a codec for class java.math.BigDecima

 解决办法:更新和插入是的时候吧数据转为DBobject

DBObject jsOB = (DBObject) com.mongodb.util.JSON.parse(data.toJSONString());

 

14.mongo占用内存过多问题:

   mongo会随着时间推移,缓存变多,占用系统更多内存,直到50%

   可以添加启动参数,限制内存代销wiredTigerCacheSizeGB=2  限制Mongo最大内存为2Gb,或者限制其占用百分比

15.删除重复数据

db.getCollection('city.area').aggregate([
    {
        $group:{_id:{name:'$name',cityCode:'$cityCode'},count:{$sum:1},dups:{$addToSet:'$_id'}}
    },
    {
        $match:{count:{$gt:1}}
    }

    ]).forEach(function(it){

         it.dups.shift();
            db.getCollection('city.area').remove({_id: {$in: it.dups}});

    });

  1. 使用aggregate聚合查询重复数据
  • $group中是查询条件,根据content、endTime、startTime字段来聚合相同的数据;
  • $count用来统计重复出现的次数, $match来过滤没有重复的数据;
  • $addToSet将聚合的数据id放入到dups数组中方便后面使用;
  1. 查询结果使用forEach进行迭代id来删除数据
  • shift()作用是剔除队列中第一条id,避免删掉所有的数据;

PS:注意函数的大小写,mongoDB是严格区分大小写的!!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值