java mongodb mysql_琐碎知识(MongoDB、MySQL、Java动态SQL语句)

这篇博客介绍了如何使用Java处理MongoDB和MySQL数据,包括字段名更新、查询、值修改、字段存在性检查、字段分组统计等操作。示例涵盖了单条和批量更新、按值查询、添加删除字段、聚合查询以及统计方法。同时,还展示了动态生成SQL语句的Java代码片段,用于更新记录。
摘要由CSDN通过智能技术生成

最近在用Java处理MongoDB数据以及MySQL数据,昨天想实现的一个小功能,记得之前记在本子里了,但是千里迢迢回去找本子看真的好麻烦,心想还是记在网上,这样以后想知道的时候也方便找。这又是什么鬼前言哈哈。

MongoDB

字段名更新(key值更新)

db.music.updateOne({},{$rename:{'sur':'sure'}}) //只更新匹配到的第一条记录的字段名

db.music.updateMany({},{$rename:{'sur':'sure'}}) //批量更新字段名(字段名由'sur'改为'sure')

根据字段值查询

db.music.find({'sure': 5}) //查询sure=5的文档

更新字段值

db.music.updateMany({'sure': 5}, {$set: {'sure': 0}}) //将sure=5的文档设其sure=0

查询包含某字段(在这里为“歌曲简介”)的文档

db.music.find({'歌曲简介': {$exists:true}}) //统计总数可将find改为count

db.music.find({"音乐风格":{$exists:true}, "歌曲风格":{$exists:false}}) //多字段的存在与否

添加/删除字段

db.music.updateOne({}, {$set: {'sure': 0}}) //添加sure字段,其值为0,如果是字符串则加引号

db.music.updateOne({}, {$unset: {'sure': 0}}) //删除sure字段,(sure后的0我还没搞清楚是什么?)

对字段“song”进行分组,计算总数,类似MySQL中的count(*)

db.music.aggregate([{$group : {_id : "$song", num_total : {$sum : 1}}}])

db.music.aggregate([{$group : {_id : "$song", num_total : {$sum : 1}}}, {$sort:{"num_total":-1}}])

//对num_total降序排序(1为升序排序)

对“actorid”进行分组并统计总数,总数大于1的挑选出来,删除

Var rs=db.actor_copy3.aggregate([{$group:{_id:'$actorid',num_total:{$sum:1}}},{$match:{'num_total':{$gt:1}}}])

while(rs.hasNext()){

var k=rs.next()

var id=k._id

print(id)

db.actor_copy3.deleteMany({'actorid':id})

}

MySQL

统计某些字段不为空的总数

SELECT COUNT(*) FROM actor_copyright

WHERE alias is not NULL and LENGTH(alias) >0

and status=5

and gender is not NULL and gender <> 2

and birthday is not NULL and LENGTH(birthday) >0

统计某些字段为空的总数

SELECT COUNT(*) FROM actor_copyright

WHERE (alias is NULL OR LENGTH(alias)=0)

and status=5

and (gender is null OR gender=2)

and (birthday is NULL OR LENGTH(birthday) =0)

ORDER BY countryCode DESC

从actor_copy选出来的记录,插入到actor_hs表中

INSERT INTO actor_hs

SELECT * FROM actor_copy

WHERE name is not NULL and LENGTH(name) >0

and nameEN is not NULL and LENGTH(nameEN) >0

and status=5

and gender is not NULL and gender <> 2 and gender <>-1

and college is not NULL and LENGTH(college) >0

Java

动态生成SQL语句(部分)

ListobjParams = new ArrayList<>();

if(mongo_nameEn != null && mongo_nameEn.length() > 0) {

updateSQL += " nameEN=?";

objParams.add(mongo_nameEn);

}

if(mongo_alias != null && mongo_alias.length() > 0) {

if(updateSQL.contains("?")) {

updateSQL += ",alias=?";

}

else {

updateSQL += " alias=?";

}

objParams.add(mongo_alias);

}

updateSQL += " WHERE id=?";

objParams.add(actorId);

num = connect.executeUpdate(updateSQL, objParams);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值