zoukankan      html  css  js  c++  java
  • MongoDB 常用语句

    # 批量修改字段值

    db.getCollection('collectiona').find().forEach(
       function(item){                
           db.getCollection('collectiona').update({"_id":item._id},{$set:{"outTradeNo1": 'wzf'+item.title}})
       }
    )

    db.task_record.update({},{$set:{"downloadAudioFile":true}}, false, true);

     # 批量修改字段:从另外一张表查询对应字段进行更新

    var cursor = db.getCollection("qualityInspectionInfo").find({"duration":null});
    while (cursor.hasNext()){
      r = cursor.next();
      var resourceInfo  = db.getCollection("resourceInfo").find({"taskId":r['taskId']})[0];
      db.getCollection("qualityInspectionInfo").update({"taskId":r['taskId']},{$set:{"duration":resourceInfo['attr']['duration']}},false,false);
    }
    

    # 查找某字段的范围在和不在 

    # 查找特定字段的取值等于哪些值"$in" ,不等于则用"$nin"
    db.getCollection('resourceInfo').find({"attr.channel":"test100","attr.seqNo":{"$in":['000','11133','qqqq']}});

    # 查询某个字段不存在
    db.getCollection('test_log_chatflow').find({"result":{"$exists":false}})

    # 查询某个字段存在
    db.getCollection('test_log_chatflow').find({"result":{"$exists":true}})

     # 根据时间范围查询

    db.getCollection('M1SAudioUploadedInfo').find({"seqNo":/^test0915a116.*/,"cloudUploadStatus":{"$in":[0,1,2]},"audioPath":/.mnt.card.test0915a116.*/,
        "createTime" : {"$gte":ISODate("2020-09-18T14:00:00.233+08:00"),"$lt":ISODate("2020-09-18T14:30:00.233+08:00")}}).count()

    # 去重:某个字段查询结果去重后统计

    //distinct 去重返回一个数组,length 获取长度。
    //distinct 第一个参数是去重字段,第二个参数是筛选条件。
    db.getCollection('resourceInfo').distinct("attr.serviceId",{"status":"complete",
        "attr.voiceTime":{"$gte":ISODate("2021-04-30T23:59:59.000+08:00")}}).length
    

    # 查询某一个字段的最大值

    db.resourceInfo.aggregate([{"$group":{_id: null,max_value:{"$max":"$createTime"}}}])

    # 分组求平均值,最大值,最小值

      db.taskTakeTime.aggregate([
        {"$group":{"_id":"$periodName","sum":{"$sum":"$takeSeconds"},"count":{"$sum":1},"avg":{"$avg":"$takeSeconds"}}}]
       )
    
      db.taskTakeTime.aggregate([
        {"$group":{"_id":"$periodName","max":{"$max":"$takeSeconds"},"min":{"$min":"$takeSeconds"}}}]
       )

    # 聚合统计求和

    #无查询条件求字段和
    db.resourceInfo.aggregate( [
       {
         $group: {
            _id: null,total: { $sum: "$attr.duration" }
         }
       }
    ] );
    
    #根据查询条件统计

      db.test_log_chatflow.aggregate([
        {"$match":{"call":true,"result":{"$ne":"hello"}}},
        {"$group":{"_id":"$sid","count":{"$sum":1}}}]
       )

    # 根据查询条件按时间分组统计

    db.resourceInfo.aggregate([
    {"$match":{"statisticsStatus":"1"}},
    {"$group":{"_id":"$attr.voiceTime","count":{"$sum":1}}}
    ] )

    db.test_log_chatflow.aggregate([
    {"$match":{"call":true,"result":{"$ne":"hello"}}},
    {$group : { _id : '$sid', count : { $sum : 1 }}},
    {$match : { count : { $gte : 2 }}}])

    
     # 跟进查询条件求字段和和数据量 
    db.resourceInfo.aggregate( [
                            { $match : { "attr.callType":2,"statisticsStatus" : "1","info.voiceTime" : {"$gte":ISODate("2020-12-26T00:00:00.2000+08:00"), "$lt":ISODate("2020-12-27T00:00:00.2000+08:00")} }},
                            { $group: { _id: null,count: { $sum: 1 },totalTime: { $sum: "$text.totalTime" },validTime: { $sum: "$text.validTime" }}}
                           ] );

    db.test_log_chatflow.aggregate([
    { "$project": {
    "difference": {
    "$divide": [
    { "$subtract": ["$updateAt", "$createAt"] },
    1
    ]
    }
    }},
    { "$group": {
    "_id": "$sid",
    "totalDifference": { "$sum": "$difference" } //"$sum" "$avg" "$max" "$min"
    }},
    { "$match": { "totalDifference": { "$gte": 0 }}}
    ])

     
    # 参考文档 https://www.cnblogs.com/zhangzxl/p/4079641.html
    # 按iso的日期分组统计,加8小时
    db.resourceInfo.aggregate([
    {"$match":{"statisticsStatus":"2","groupId":1434}},
    {"$group": {"_id": {"createDate": {
                    "year": {"$year": {$add:["$createTime",28800000]}}, "month": {"$month": {$add:["$createTime",28800000]}}, "day": {"$dayOfMonth":{$add:["$createTime",28800000]}}}}, "count": {
                    "$sum": 1}}},
    {"$sort":{"_id":1}}
    ] )
    

      

    # 索引

    #删除索引
    db.task_record.dropIndex({"createTime": -1}); #创建索引
    db.task_record.ensureIndex({
    "createTime": -1, "voiceTime": -1, "duration": -1}); db.task_record.ensureIndex({"filename": -1});

    # 备份数据库表:导出表的json文件

    #进入bin目录
    cd /data/mongodb/bin
    #
    ./mongoexport -h 10.40.7.xx:27017 -d test_jxdx120 -c rule -o ./rule.json

    #导入json文件

    --导入json文件
    mongoimport --db ${db_name} --collection ${collection_name} --file contacts.json
    ./mongoimport --db test_jxdx120 --collection rule --file /data/mongodb/bin/jsondata/rule.json

    参考文档

    常用:https://www.cnblogs.com/liu--huan/p/10721266.html

    时间差:https://www.it1352.com/1638348.html

  • 相关阅读:
    地铁开发进度02
    地铁开发进度02
    CSS 笔记——列表表格
    CSS 笔记——列表表格
    前端核心代码保护技术面面观
    激活函数总结
    data argumentation 数据增强汇总
    YOLOV4
    import android.support.annotation.NonNull;报错
    关于import android.support.v4.app.ContextCompat;找不到contextcompat的解决方法
  • 原文地址:https://www.cnblogs.com/forest-sunshine/p/14119611.html
Copyright © 2011-2022 走看看