最近在工作中遇到一个项目在查询mongo数据的时候没有用像MongoTemplate这种工具包,用的是最原生的Bson构建条件方式。对于简单的查询来说还好应付,但是复杂一些的,比如多or、多and 等等这种条件,构建起来太麻烦了,本身也对这种方式不熟悉。今天偶然看到Mongo官方的一个工具可以将我们的查询语句转为Bson的查询语句,在这里做一下记录。

//简单的查询还好应付
Bson bson = Filters.eq("name", "小明");
FindIterable<Document> result = mongoClient.find(bson);

//逻辑处理
//  result.XXXXXXXX
//像这种稍微复杂一些的,肾都是疼的。
Bson bson = Filters.and(
Filters.eq("task_id", 1001),
Filters.eq("data_id", 2001),
Filters.eq("type", "TEXT"),
Filters.exists("original", true),
Filters.or(Filters.exists("translate_original", false),
Filters.eq("translate_original", "")));

FindIterable<Document> result = mongoClient.find(bson);

//逻辑处理
//  result.XXXXXXXX

-----------------进入正题-----------------

MongoDB Compass

mongo官方的一款mongodb ui可视化管理工具,类似于navcat,不过今天本文重点介绍下查询条件的转换


1).软件界面:

mongodb objectid 用雪花算法生成 mongodb代码生成器_数据库

mongodb objectid 用雪花算法生成 mongodb代码生成器_字段_02

连接上数据库之后,左边一列是我们数据库的一些连接信息和数据库的信息。

2).软件使用:

mongodb objectid 用雪花算法生成 mongodb代码生成器_mongodb_03

我们可以在黄色框部分填写我们的查询条件

  • 在filter内输入过滤条件
  • 在project内输入显示哪些字段(1代表true)
  • 在sort内输入按哪个字段排序
  • 在collation内输入显示结果数量,skip数值表标跳过前面多少个结果,limit数据表示只显示前面多少个结果

mongodb objectid 用雪花算法生成 mongodb代码生成器_查询语句_04

我这里做了一个简单的条件查询例子,效果和预期是一样的。

3).转换为java语句:

mongodb objectid 用雪花算法生成 mongodb代码生成器_查询语句_05

①.点击其余选项按钮–>导出为语句

mongodb objectid 用雪花算法生成 mongodb代码生成器_java_06

②.右上角选择导出为java语言的查询语句

4).最终效果:

mongodb objectid 用雪花算法生成 mongodb代码生成器_查询语句_07

稍作调整,看起来就美观多了!