spring java 实现执行原生 mongodb CRUD 命令-MongoDB,spring-ICode联盟

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

分类:MongoDB,spring    130人阅读    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);
}

 

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

极简品牌设计工作室HTML5网站模板

css照明喷泉灯光动画特效

商务代理服务商公司网站模板

HTML5保健品营养品引导页模板

有趣的css图片遮罩层滤镜特效

CSS3 SVG叶子虚线响应式布局代码

教育辅导培训机构HTML5网站模板

打造健康生活方式宣传网站模板

时尚css导航菜单栏动画特效

互联网设计师个人简历网页模板

html5 canvas文字放射发光动画特效

创意设计机构HTML5网站模板

html5鼠标经过星星连成一条线特效

3dmax弹跳鼠标跟随动画特效

4款不同岗位个人求职简历网页模板

炫酷WebGL流体图片滑动切换效果

canvas卡通液体马赛克图像特效

css精美蝴蝶动画特效

HTML5浪漫风格婚礼婚纱婚庆网站模板

高级岗位个人求职面试网页模板

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