mongodb
查询时严格区分类型,如果类型不正确,则查询不出数据
#sum统计求和一直为0,原来是字段类型为string,所以一直是0.更改字段类型为double
#查询递归上级ID数组某个字段
> db.team_award.find({"pid.id":"13457"});#加引号为string类型
> db.team_award.find({"pid.id":13457}); #该字段值为数字
> db.team_award.aggregate([{$group : {_id : null, total: {$sum : "$money"}}}]) #统计sum求和money字段
{ "_id" : null, "total" : 0 }
查看字段类型:
typeof(db.collectionName.findOne().field)
typeof(db.getCollection(collectionName).findOne().field)
> typeof(db.team_award.findOne({"uid":508}).mobile)
string
#把集合money字段string类型更改成doublue
db.getCollection('team_award').find({"money": {$type:2}}).forEach(function(x){
db.getCollection('team_award').updateOne({_id: x._id}, {$set:{money: Number(x.money)}})
})
聚合查询循环删除不符合条件的记录
db.test.aggregate([
{
$project:{
'time':1,
'year':{$year:'$time'}, //年份
'month':{$month:'$time'},//月份
'dayOfMonth':{$dayOfMonth:'$time'},//月份的第几天
'dayOfWeek':{$dayOfWeek:'$time'},//周几
'week':{$week:'$time'},//一年的第几周
'dayOfYear':{$dayOfYear:'$time'},//一年的第多少天
'date':{$dateToString:{format:'%Y%m',date:'$time'}}//自定义取值
}
}
]).forEach(function(item){
if(typeof(item.time) != 'object' || item.date == "197001"){//如果类型或时间错误则删除
return db.test.remove({_id:item._id});
}
})
mongodb数据字段类型修改字段类型:【类型参考官方文档】$type — MongoDB Manual
网友评论