原创 

spring java 实现执行原生 mongodb CRUD 命令

分类:MongoDB,spring    258人阅读    IT小君  2023-03-30 10:39

背景:一般我们在mongodb 客户端都是使用mongodb-shell执行monogo sql,但是一般我们代码中不会引入Mongo shell 实现的驱动,而且mongodb shell在java 代码中实现并不灵活,还会出现没有权限的情况。所以本文采用mongodb 原生的sql方式实现,支持CRUD所有操作,但结果解析各异。

命令格式如下

db.runCommand(
   {
     aggregate: "<collection>" || 1,
     pipeline: [ <stage>, <...> ],
     explain: <boolean>,
     allowDiskUse: <boolean>,
     cursor: <document>,
     maxTimeMS: <int>,
     bypassDocumentValidation: <boolean>,
     readConcern: <document>,
     collation: <document>,
     hint: <string or document>,
     comment: <any>,
     writeConcern: <document>,
     let: <document> // Added in MongoDB 5.0
   }
)

比如update:

{ update: "box", updates: [ { q: { "id":"7854"}, u: { $set: { "boxNum":"BOX-001"} }} ] }

具体格式请参考官网:https://www.mongodb.com/docs/manual/reference/command/nav-crud/

关于数据库账号密码等配置信息的拉取请参考前文:spring cloud 根据profile 配置拉取其他服务配置(spring cloud 配置拉取实现)

代码实现(结果解析只实现了update):

public static String runSql(String sql, Map < String, String > config) {
    try (MongoClient mongoClient = conn(config)) {
        Document result = mongoClient.getDatabase(config.get("database")).runCommand(Document.parse(sql));
        return result.getInteger("nModified") > 0 ? "FAIL" : "SUCCESS";
    }
}

public MongoClient conn(Map < String, String > config) {
    ServerAddress serverAddress = new ServerAddress(config.get("ip"), Integer.parseInt(config.get("port")));
    List < ServerAddress > addrs = new ArrayList();
    addrs.add(serverAddress);
    MongoCredential credential = MongoCredential.createScramSha1Credential(config.get("username"), config.get("database"), config.get("password").toCharArray());
    List < MongoCredential > credentials = new ArrayList();
    credentials.add(credential);
    return new MongoClient(addrs, credentials);
}

 

点击广告,支持我们为你提供更好的服务

js+css3抽奖转盘旋转点餐代码

css鼠标跟随文字模糊特效

HTML5数字产品服务公司网站模板

HTML5现代家居装潢公司网站模板

响应式时尚单品在线商城网站模板

jQuery右端悬浮带返回顶部特效

html5 svg夜空中星星流星动画场景特效

css+js实现的颜色渐变数字时钟动画特效

现代时尚家具公司网站模板

html5 canvas进度条圆环图表统计动画特效

html5 canvas彩色碎片组合球形旋转动画特效

HTML5 Canvas竖直流动线条背景动画特效

canvas炫酷鼠标移动文字粒子特效

html5图标下拉搜索框自动匹配代码

响应式咖啡饮品宣传网站模板

小众时尚单品在线电子商务网站模板

响应式太阳能能源公司网站模板

网页设计开发公司网站模板

中小型创意设计服务公司网站模板

有机水果蔬菜HTML5网站模板

点击广告,支持我们为你提供更好的服务
 工具推荐 更多»
点击广告,支持我们为你提供更好的服务