Mongo DB java 起步操作,连接数据库,查询语句_the_conquer_zzy的专栏-程序员宅基地

技术标签: hadoop  

首先, 下载mongo-java_driver
maven 依赖如下

 <dependency>
      <groupId>org.mongodb</groupId>
      <artifactId>mongo-java-driver</artifactId>
      <version>3.5.0</version>
  </dependency>

导入相关类。

import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;   // mongo db中的一条数据就是一个Document类型

连接数据库:

 public static MongoDatabase getMongoDataBase(String host, int port, String dbName){

    //need a string: host and a int: port
        MongoClient client=new MongoClient(host,port);

        MongoDatabase db=client.getDatabase(dbName);

        return db;
    }

构造查询语句:

通用语法:  key 为要查询的键, value 为要查询的键对应的值,对应的select sql为  where key=value
BasicDBObject queryCondition=new BasicDBObject(key,value);
或者  BasicDBObject queryCondition=new BasicDBObject();
    queryCondition.put(key,value);
// BasicDBObject 是一个map  可以用put 增加要查询的语句

queryCondition.put("age","25"); //select age=25,在mongodb js语法形式如下{"age":25}
一个BasicDBObject 就相当于js语法中一个{}
另外查询语句可以嵌套,比如常见的在mongo js语法中 find({
   "age":{
   "$gt":25}})

这条语句有2个{} 相当于需要两个BasicDBObject 嵌套
对应的java 语句如下:
BasicDBObject queryCondition=new BasicDBObject("age",new BasicDBObject("$gt",25));

或者
BasicDBObject condition=new BasicDBObject("$gt",25); 
queryCondition.put("age",condition);

写完查询语句之后进行查询

collection.find(queryCondition); // 原型是 collection.find(BasicDBObject);

find 方法返回一个FindIterable<> 类型的数据

查询后需要进行检索结果

//获取可迭代结果集
FindIterable<Document>  findIterable=collection.find();

//获取迭代器游标
MongoCursor<Document> iter=findIterable.iterator();

//利用迭代器遍历数据集
while(iter.hasNext()){
    Document tmp=iter.next();  // Document is org.bson.Document
    //Document 是一个map 可以根据key获取记录中的值
    Value=tmp.get(key);
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/the_conquer_zzy/article/details/78853206

智能推荐

mysql双机_lyq_csdn的博客-程序员宅基地

转自:https://www.cnblogs.com/kristain/articles/4142970.htmlhttp://blog.csdn.net/qq394829044/article/details/53203645双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致。 这样做的好处多。 1....

efi shell的英文介绍_请问电脑开机后显示英文字母efi shell version 2.31是什么意思..._陈太初的博客-程序员宅基地

你好你说的这种情况,一般都是由 系统软件、内存、硬盘引起的。1 电脑不心装上了恶意软件,或上网时产生了恶意程序,建议用360 卫士 、金山卫士等软件,清理垃圾,查杀恶意软件,就可能解决。实在不行,重装,还原过系统,可以解决软件引起的问题。2 如果不能进入系统,可以开机后 到系统选择那里 按f8 选 起作用的最后一次正确配置和安全模式,可能可以进入系统。3 点 开始菜单 运行 输入 cmd 回车,在...

burpsuite 自定义插件-java 版本_freshfox的博客-程序员宅基地

package burp;import java.awt.Color;import java.awt.Component;import java.awt.FlowLayout;import java.awt.event.FocusEvent;import java.awt.event.FocusListener;import java.awt.event.ItemEvent;im...

计算机科学与技术发展前景2500字,计算机的发展趋势论文_5000字互联网的发展趋势论文_论互联网的发展趋势5000字论文..._张恒平的博客-程序员宅基地

请问计算机科学与技术专业毕业论文,可以写电子商务的现状和发展趋势吗?急...这个要看你们学校的要求了。我也是这个专业毕业的,一般情况:第一、要看你们专业大三分的方向是否包含你说的电子商务;第二、如果你实习的是电子商务方面的工作,那么有可能你就可以是用这个题目。个人建议你还是和你的导师交流一下,一个学校一个要求,一个学校一个状况。导师说行,就准行。导师是你毕业论文最重要的把关者,什么都可以和他交流,...

计算机网络化的一种顶级模式,西交《计算机应用基础》第八章 计算机网络 课堂笔记..._游龙浴火的博客-程序员宅基地

西交《计算机应用基础》第八章计算机网络课堂笔记◆主要知识点掌握程度重点掌握计算机网络的功能;计算机网络地址;工作模式等;了解计算机网络的基本概念;网络对于我们的影响;网络的发展;常用搜索引擎;难点电子邮件的收发操作;搜索的操作;◆知识点整理一、网络基础知识什么是计算机网络网络发展的历史网络分类网络的常见术语TCP/IP协议Windows的网络功能(一)计算机网络概述1、计算机网络一般地,将分散的多...

oracle 改实例名,oracle更改实例名_产品大观的博客-程序员宅基地

oracle更改实例名--------------------环境情况SQL&gt; select * from v$version;BANNER----------------------------------------------------------------Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Productio...

随便推点

matlab 怎么话3维图,用matlab画三维图形_熊江乔的博客-程序员宅基地

将plot3d放在matlab根目录下,然后在窗口处输入椭球的一般方程就行了。注意要把等式右边的移过来,让右边为0.椭球和平面源代码:functionplot3d(varargin)if ishandle(varargin{1})cax = varargin{1};axes(cax);args{:} =varargin{2:end};elseargs = varargin;end[fun dom...

linux执行命令在哪,linux中是如何找到执行shell的命令_小争哥的博客-程序员宅基地

用ls命令举例,在linux中,执行ls命令,会经过几个查找过程寻找到ls程序。alias中查找alias可以用来设置命令别名,例如alias la='ls -lrt'alias ls='ls --color=auto'如果在这里找到了,就会执行下去。如果没有找到,就会继续寻找下去内置命令中查找在shell中,如果是内置命令,则会直接执行,否则还会继续寻找下去。用help命令看有哪些内置命令。[...

hive创建udf介绍_洗洗睡吧-程序员宅基地

1、先安装java环境 此处不介绍2、安装编程软件IDEa、在IDE里创建maven工程b、在maven工程里编写xml文件,按依赖选自动导入依赖。等待半小时左右依赖会添加完成。xml文件内容如下:&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchem...

.NET的对象映射工具AutoMapper使用笔记_weixin_33890526的博客-程序员宅基地

AutoMapper是一个.NET的对象映射工具。项目地址:https://github.com/AutoMapper/AutoMapper。帮助文档:https://github.com/AutoMapper/AutoMapper/wiki主要用途领域对象与DTO之间的转换、数据库查询结果映射至实体对象。使用笔记场景1:源类型BlogEntry,目标类型BlogPostD...

ffmpeg的导入和视频解码,YUV保存(ffmpeg4.2)_weixin_30657999的博客-程序员宅基地

1.分配一个AVFormatContext,FFMPEG所有的操作都要通过这个AVFormatContext来进行2.接着调用打开视频文件AVFormatContext * pFormatContext = avformat_alloc_context();int ret = avformat_open_input(&amp;pFormatContext,filepath...

MessageBox.Show用法_dipan8982的博客-程序员宅基地

private void button3_Click(object sender, EventArgs e) { MessageBox.Show(" 1 个参数 "); }~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...