MongoDB —— 常规操作

MongoDB —— 常规操作


Find

# 查询goods中字段goods_original_price包含ou payez en的数据
db.getCollection('goods').find({'goods_original_price':/ou payez en/}).count();
# 查询goods表中,skuId=ct8113的search_key和goods_name
db.getCollection('goods').find({'sku_id': 'ct8113'}, {'search_key': 1, 'goods_name': 1});
# 倒序排序
db.getCollection('goods').find({'goods_target':'www.ebay.co.uk'}).sort({'goods_update_time': -1})
# 查询时间区间内的数据
db.sms_log.find(
{"$and":[{"createdTime":{"$gt":"2021-07-05 0:0:0"}},{"createdTime":{"$lt":"2021-07-06 0:0:0"}}]}
)

Remove(Delete)

# 条件删除(删除goods中字段goods_original_price,值包含ou payez en的数据)
db.getCollection('goods').remove({'goods_original_price':/ou payez en/}).count();
#添加一个字段.  url 代表表名 , 添加字段 content。 字符串类型。
db.url.update({}, {$set: {content:""}}, {multi: 1})#删除一个字段
db.url.update({},{$unset:{'content':''}},false, true)
db.getCollection('metrics_main').update({},{$unset:{"startTime":""}},false,true)

Update

db.getCollection('goods').update( 
    # 检索条件
    {'goods_original_price':/ou payez en/},
    # 修改内容 
    {$set:{"goods_original_price":""}},
    false,  
    true     
);
# 将文档名aveResponseTime改为avgResponseTime
db.getCollection('metrics_main').update({}, 
{$rename : {"aveResponseTime" : "avgResponseTime"}}, false, true)

聚合

# 统计区间内的数据
db.sms_log.aggregate(
    [{
       $match: {
          createdTime: {
             $gte: '2021-07-05',
             $lte: '2021-07-06'
          }
       }
    }, {
 $group: {
    _id: null,
    SUM: {
       $sum: "$price"
    },
    COUNT: {
       $sum: 1
    }
 }
 }]
 );
# 统计时间在2021-07-05与2021-07-06之间的,并且callBackSize>10的记录
db.sms_log.find(
{"$and":[
    {"createdTime":{"$gt":"2021-07-05 0:0:0"}},
    {"createdTime":{"$lt":"2021-07-06 0:0:0"}}, 
    {"callBackSize":{"$gt":10}}
    ]}
)
# 统计goods表中,相同goods_name出现的次数
db.getCollection('goods').aggregate( [ 
   {$unwind:"$goods_name"},
   {$group:{_id:"$goods_name",count:{$sum:1}}},
   {$project:{_id:0,count:1,userid:"$_id"}} 
])
# 统计goods表中,sku_id=ct8113的相同goods_name出现的次数
db.getCollection('goods').aggregate( [
   {$match: {"sku_id": 'ct8113'}}, 
   {$unwind:"$goods_name"},
   {$group:{_id:"$goods_name",count:{$sum:1}}},
   {$project:{_id:0,count:1,userid:"$_id"}} 
])
# 统计goods表中,sku_id=ct8113的,相同search_key出现的次数
db.getCollection('goods').aggregate( [
   {$match: {"sku_id": 'ct8113'}}, 
   {$unwind:"$search_key"},
   {$group:{_id:"$search_key",count:{$sum:1}}},
   {$project:{_id:0,count:1,search_key:"$_id"}} 
])
# 根据serviceName分组,取aveResponseTime总合平均值,再排序
db.getCollection('metrics_main').aggregate(
    {
        "$group":{
            _id: "$serviceName",
            avgAmount: { $avg: { $sum: [ "$aveResponseTime"] } },
        }
    },
    {
        "$sort":{"avgAmount":1}
    }
);
# 时间区间查找,并多字段分组后聚合取平均值,并按照平均值倒序
db.getCollection('metrics_main').aggregate(
    [{
       "$match": {
          nowtime: {
             $gt: '2021-08-23 16:40:10',
             $lt: '2021-08-23 17:10:10'
          }
       }
    },
    {
        "$group":{
            _id: {"serviceName": "$serviceName", "endpointName": "$endpointName"},
            avgAmount: { $avg: "$avgResponseTime"},
        }
    },
    {
        "$sort":{"avgAmount": -1}
    }]
)

# 统计日期2021-10-14的price总数
db.getCollection('sms_log').aggregate(
    {
       "$match": {
          day: '2021-10-14'
       }
    },
    {
        "$group":{
            _id: "$day",
            sumPrice: { $sum:"$price" },
        }
    },
    {
        "$sort":{"day":1}
    }
)

# 查询短信信息,day包含"2021-07-02","2021-07-31",根据day分组,并sum price
db.getCollection('sms_log').aggregate(
    {
       "$match": {
          day:{
            $in:["2021-07-02","2021-07-31"]  
        } 
       }
    },
    {
        "$group":{
            _id: "$day",
            sumPrice: { $sum:"$price" },
        }
    },
    {
        "$sort":{"day":1}
    }
)
# 根据日期分组,获取每天的数据总数
db.getCollection('sms_log').aggregate(
    {
       "$match": {
          day:{
            $in:["2021-07-02","2021-07-03","2021-07-04","2021-07-05","2021-07-06","2021-07-07","2021-07-08","2021-07-31"]  
        } 
       }
    },
    {
        "$group":{
            _id: "$day",
            count: { $sum: 1},
            sumPrice: { $sum:"$price" }
        }
    }
)
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值