MongoDB基于scala语言的简单探索

MongoDB基于scala语言的简单探索

一、什么是mongodb

    mongodb是一种典型的NoSql类型的数据库,相比于传统的关系型数据库,其最大的优势是存贮单元是文档(document),即:不存在二维表的结构,存贮方式比较自由,也可以简单的理解为:**将类似于json结构的数据存在了一个文档中**,官方一点的话是: mongodb是一个使用C++编写的开源,跨平台,面向文档的数据库
    这样来看,mongodb里面基本的容器是database,相当于hive中的database,在每一个database下,通常会有多个集合(collection),每个集合下面通常会有多个文档,这些文档相当于oracle中的table,当时不同点在于文档是具有动态变化结构,并且同一集合下的相同字段是可以具有不同类型的值的

二、怎么连接mongodb

1、下载mongodb的相关包,包括(driver、core)

maven私服地址:"https://mvnrepository.com/"
使用你自己项目的项目构建工具下载相应的jar包,例如我的是gradle工程,就引入下面的包,但是请注意=》如果是scala语言的话,请引入cashah_2.11这个包 
compile 'org.mongodb:mongo-java-driver:3.5.0'
compile 'org.mongodb:casbah_2.11:3.1.1'
刷新完你的依赖包以后,就可以开始下面的探索之旅了

2、建立mongodb的连接,类似的一个查询程序

object MongodbUtil {
  //mongodb的ip地址
  val url = "0.0.0.0" //修改成你自己的mongodb的ip地址
  //mongodb的端口,一般采用默认端口
  val port = 27017
  //要获取的数据库的名字
  val databaseName = "vehicle_feature"
  //申明一个客户端连接
  val database = MongoClient(url, port)
  //获取指定的库
  val mongoClient = database.getDB(databaseName)
  //选取指定的文档

  //批量获取mongodb中的文档,其中queryCondition是条件数组,注意查询时,优化查询方式的方法其实和oracle是一样的,尽可能的利用连接池或者建立尽可能少的连接
  def findMuti(queryCondition: Array[String], startTime: String, endTime: String): JSONArray = {
    val result = new JSONArray()
    val connect = mongoClient.getCollection("daily_features")
    println(connect.find().count())
    result.add(connect.find(MongoDBObject("_id.tid" -> MongoDBObject("$in" -> queryCondition),"_id.time" -> MongoDBObject("$gte"->new SimpleDateFormat("yyyy-MM-dd").parse(startTime), "$lte" -> new SimpleDateFormat("yyyy-MM-dd").parse(endTime)))).toArray)
    database.close()
    result
  }

3、写在最后

  上面的程序是基于scala_2.11的编译环境
  实际在查询时,并不需要返回文档中所有的字段信息,这时可以在MongoDBObject中添加projection,用于返回指定的字段,例如MongoDBObject("_id"->0,"key"->1)

猜你喜欢

转载自blog.csdn.net/u013220482/article/details/78463193