携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情
命令使用学习文档网站:
https://haicoder.net/mongodb/mongodb-count.html
CollectionNameA
db.getCollection("CollectionName").insert( {
name: "名称"
} );
CollectionNameB
db.getCollection("CollectionNameB").insert( {
_id: ObjectId("62abf42da6050000ad001dbb"),
sex:"男"
} );
CollectionNameC
db.getCollection("CollectionNameC").insert( {
_id: ObjectId("62ab013ea35b000031000440"),
hight: "2"
} );
mongodb字符串类型转数字运算报错语句如何解决
db.getCollection("CollectionNameC").aggregate
(
[{ "$match" :
{ "createTime" : { "$gte" : "2022-06-14 18:55:44", "$lte" : "2022-06-21 18:55:44"}}},
{ "$sort" : { "createTime" : -1}},
{ "$group" : { "_id" : "$A", "count" : { "$sum" : 1}, "createTime" :
{ "$push" : "$createTime"}, "timestamp" : { "$push" : "$timestamp"}, "maxTimestamp" :
{ "$max" : "$timestamp"}, "minTimestamp" : { "$min" : "$timestamp"}, "indexfeatureName" :
{ "$first" : "$B"}}}, { "$match" : { "B" : { "$ne" : null}}},
{ "$project" :
{ "_id" : 0, "A" : "$_id",
"createTime" : 1, "timestamp" : 1,
"count" : 1,
"maxTimestamp" :{"$convert":{"input":"$maxTimestamp","to":"double", "onError": "$maxTimestamp","onNull":"missing time"}} ,
"minTimestamp" : {"$convert":{"input":"$minTimestamp","to":"double", "onError": "$minTimestamp","onNull":"missing time"}},
"indexfeatureName" : 1,
"intervalTimestamp" : { "$subtract" : ["$maxTimestamp", "$minTimestamp"]}}},
{ "$sort" : { "intervalTimestamp" : -1}},
{ "$project" : { "intervalTimestamp" : 1, "A" : 1, "B" : 1}},
{ "$limit" : 5}
]
)
#$group根据A分组,查询它的数量为count。
#$project给分组的字段重新定义输出的值。
#$sort根据重新定义的输出字段--进行排序1为升序,-1为降序
根据分组、根据记录数量排序:
db.getCollection("CollectionNameB")
.find({ "createTime" : { "$gte" : ISODate("2022-06-15T00:00:00Z")
}})
.aggregate([
{
$addFields: {
convertedDate: { $toDate: "$createTime" }
}
},
$match
{$project:{ "_id":0,"convertedDate":"$convertedDate"
,"createTime":1}
}
])
根据时间查询:
db.getCollection("CollectionNameB").find({ "createTime" : { $gt: "2021-06-13 00:00:00" } } );
根据时间查询,根据分组、根据记录数量排序:
db.getCollection("CollectionNameB").aggregate([
{
$match:{
"createTime":{$gte:"2022-06-14",$lte:"2022-06-15 23:59:59"}
}
},
{$group:{"_id":{"A": "$A"},count:{$sum:1} }},
{$project:{ "_id":0, "A":"$_id.A" , "count":"$count"}
},
{$sort:{count:1}}
]);
mongdb字符串时间类型转化问题--学习链接
https://www.656463.com/wenda/wfcBSONlxzfczhwrqMongoDBforJava3_533
https://cloud.tencent.com/developer/ask/sof/396195
https://cloud.tencent.com/developer/ask/sof/1416748/answer/1944879
mongdb时间范围查询--学习链接
时间范围查询:
https://blog.csdn.net/qq_38359685/article/details/113865582
https://blog.csdn.net/liuyifeng1920/article/details/53607975
https://blog.csdn.net/qgnczmnmn/article/details/107249908
https://www.cnblogs.com/xuliuzai/p/9802869.html#
https://blog.csdn.net/Xw_Vivian/article/details/102904641
条件match过滤-group分组并指定一个字段-project指定输出字段-sort排序-limit取几条
db.getCollection("CollectionNameB").aggregate([
{
$match:{
"createTime":{$gte:"2022-05-14",$lte:"2022-06-16 23:59:59"}
}
},
{$group:{"_id":{"A": "$A"},count:{$sum:1}
, 'indexName': {'$first': '$indexName'}
}},
{$project:{ "_id":0, "A":"$_id.A" , "count":"$count","B":"$B"}
},
{$sort:{count:1}}
,
{$limit:2}
]);
统计分组七天每天的次数
db.getCollection("CollectionNameB").aggregate([
{
$match:{
"createTime":{$gte:"2022-06-09",$lte:"2022-06-16 23:59:59"}
}
},
{
$project :{new_time_stamp :{$substr :["$createTime",5,5]},"_id":0,createTime:1,}
}
,
{
$group : {_id :"$new_time_stamp",count:{$sum:1}}
}
,
{$project:{ "_id":0, "name":"$_id" , "value":"$count"}
}
,{$sort:{name:1}}
]);
project().andExpression()添加表达式异常解决
mongotemplate Aggregation.project().andExpression() 报错 Expected ‘rsquare(])‘ but was ‘comma(,)
将expression中的数组符号[]全部替换成{}就ok
进行时间的加减
db.getCollection("collections_name").aggregate( [
{$match: { createTime: { $lte: '2021-06-17 00:00:00' , $gte: '2021-06-18 00:00:00' } } },
{$project:
{
createTime:1,
date1: { $dateFromString: { dateString: '$createTime', } }, //String 转 date
date2: { $add : [ { $dateFromString: { dateString: '$createTime' } } , 3*24*60*60*1000 ] },
//时间加3天,对应的减三天采用 $subtract
date3: { $dateToString: { format: "%Y-%m-%d", date: { $dateFromString: { dateString: '$createTime' } } } },
//String转时间,并按指定格式显示
date4: { $dateToString: { format: "%Y-%m-%d", date: { $add : [ { $dateFromString: { dateString: '$createTime' } } , 3*24*60*60*1000 ] } } },
//加上指定时间,并按指定格式显示
date5: {$max: '$createTime'} //查看最大时间
}
}
] )
数据的加减
db.getCollection("A").aggregate( [
{$match: { createTime: { $lte: '2021-06-18 00:00:00' , $gte: '2021-06-17 00:00:00' } } }
,
{$project:
{
date1:{$max:'456464654'},
date2:{$max:'84948646'},
date3: { $subtract: ['$date1','$date2'] } //String 转
}
}
,
{$project:
{
date3: { $subtract: [{$toInt:'$date1'},{$toInt:'$date2'}] } //String 转
}
}
] )
springcloud的集成使用mongodb客户端后续再加-有问题可以评论问我-我可以帮写