博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java操作mongoDB2.6的常见API用法
阅读量:6113 次
发布时间:2019-06-21

本文共 6845 字,大约阅读时间需要 22 分钟。

hot3.png

对于mongoDB而言,学习方式和学习关系型数据库差不太多

开始都是学习如何insert、find、update、remove,然后就是分页、排序、索引,再接着就是主从复制、副本集、分片等等

最后就是通过它提供的各个驱动(比如Java、PHP、node.js等等)来练习所谓的高级用法

另外:相对于Oracle有PLSQL Developer,MySQL有HeidiSQL

mongoDB也不例外,它的图形化工具中有一款叫做mongoVUE的,我用的是1.5.3破解版(不是每15天就得改一次注册表的那种)

下面演示的就是以Java为例,常见的操作mongoDB API用法

package com.jadyer.test; import java.net.UnknownHostException;import java.util.ArrayList;import java.util.List; import org.bson.types.ObjectId;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test; import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.DBObject;import com.mongodb.MongoClient;import com.mongodb.WriteResult;import com.mongodb.util.JSON; /** * mongoDB的Java驱动测试 * @see ---------------------------------------------------------------------------------------- * @see 配置 * @see 1)下载https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.1.zip * @see 2)解压到本地硬盘D:\Develop\mongoDB\中,并配置环境变量path=D:\Develop\mongoDB\bin * @see   然后在CMD下执行此命令验证安装成功与否>mongod --version * @see 3)建立D:\Develop\mongoDBData\文件夹,用于存放mongoDB数据文件 * @see 4)自定义bat文件,分别用于启动mongoDB数据库和连接数据库的客户端 * @see   启动客户端的mongo_client.bat内容为-->mongo 127.0.0.1:27017/admin * @see   启动数据库的mongo_db.bat内容为------>mongod --dbpath D:\Develop\mongoDBData --rest * @see   注:加入[--rest]参数是为了能够访问mongoDB的Web控制台http://127.0.0.1:28017/ * @see ---------------------------------------------------------------------------------------- * @see Java驱动 * @see 这里要用到mongoDB的Java驱动包,下载地址http://docs.mongodb.org/ecosystem/drivers/java/ * @see ---------------------------------------------------------------------------------------- * @create May 15, 2014 10:17:30 PM * @author 玄玉
*/public class MongoDBTest { private static MongoClient mongoClient; private static DB db; /** * 建立数据库连接 */ @BeforeClass public static void globalInit(){ try { //mongoClient = new MongoClient(Arrays.asList(new ServerAddress("127.0.0.1", 27017), new ServerAddress("127.0.0.1", 27018), new ServerAddress("127.0.0.1", 27019))); mongoClient = new MongoClient("127.0.0.1", 27017); } catch (UnknownHostException e) { System.err.println("mongoDB主机地址有误"); } db = mongoClient.getDB("mydemo"); } /** * 销毁数据库连接 */ @AfterClass public static void globalDestroy(){ mongoClient.close(); } /** * 获取数据库信息 */ @Test public void getMetaData(){ //查询数据库中所有的集合名称 for(String collectionName : db.getCollectionNames()){ System.out.println("mydemo数据库所拥有的集合为:[" + collectionName + "]"); } //查询某一集合中的数据 DBCollection collection = db.getCollection("person"); DBCursor cursor = collection.find(); try{ while(cursor.hasNext()){ System.out.println("person集合所拥有的name为--[" + cursor.next().get("name") + "]"); } }finally{ cursor.close(); } System.out.println("person集合中的记录数为----------->" + cursor.count()); System.out.println("person集合数据格式化后的JSON串为-->" + JSON.serialize(cursor)); } /** * 创建一个空的"moive"集合 */ @Test public void createCollection(){ db.createCollection("movie", new BasicDBObject()); } /** * 为"moive"集合添加文档 */ @Test public void insertDocument(){ DBObject doc = new BasicDBObject(); doc.put("name", "24"); doc.put("season", "ninth"); doc.put("score", 88); List
actorList = new ArrayList
(); actorList.add("Jack Bauer"); actorList.add("Counter Terrorist Unit"); doc.put("actor", actorList); db.getCollection("movie").insert(doc); } /** * 批量插入文档 */ @Test public void insertBatchDocument(){ List
docList = new ArrayList
(); DBObject doc11 = new BasicDBObject("name", "Prison Break").append("season", "fourth").append("score", 99); DBObject doc22 = new BasicDBObject("name", "Game of Thrones").append("season", "third").append("score", 92); docList.add(doc11); docList.add(doc22); db.getCollection("movie").insert(docList); } /** * 根据_id删除数据 */ @Test public void deleteById(){ WriteResult result = db.getCollection("movie").remove(new BasicDBObject("_id", new ObjectId("5374c6dc5030e0ea4dac8907"))); System.out.println("本次操作影响的记录条数为:" + result.getN()); } /** * 根据条件删除数据 */ @Test public void deleteByData(){ DBObject doc = new BasicDBObject(); doc.put("name", "Prison Break"); WriteResult result = db.getCollection("movie").remove(doc); System.out.println("本次操作影响的记录条数为:" + result.getN()); } /** * 更新数据 * @see 增加email属性 */ @Test public void update(){ DBObject doc = new BasicDBObject(); doc.put("$set", new BasicDBObject("email", "Jadyer@yeah.net")); WriteResult result = db.getCollection("movie").update(new BasicDBObject(), doc, false, true); System.out.println("本次操作影响的记录条数为:" + result.getN()); } /** * 查询"moive"集合中的key */ @Test public void getKey(){ DBObject keys = new BasicDBObject(); keys.put("_id", false); keys.put("name", true); //keys.put("score", true); //第一个参数表示查询条件,第二个参数表示返回的具体key DBCursor cursor = db.getCollection("movie").find(null, keys); try{ while(cursor.hasNext()){ DBObject object = cursor.next(); System.out.println("查询到的name=" + object.get("name") + ", score=" + object.get("score")); } }finally{ cursor.close(); } } /** * 查询"moive"集合中分数不超过95的key */ @Test public void getKeyUseScore(){ DBObject ref = new BasicDBObject(); ref.put("score", new BasicDBObject("$lte", 95)); DBCursor cursor = db.getCollection("movie").find(ref, null); try{ while(cursor.hasNext()){ DBObject object = cursor.next(); System.out.println("查询到的name=" + object.get("name") + ", score=" + object.get("score")); } }finally{ cursor.close(); } } /** * 分页查询 */ @Test public void limitSkip(){ DBCursor cursor = db.getCollection("movie").find(null, null); cursor.limit(0).skip(1); try{ while(cursor.hasNext()){ DBObject object = cursor.next(); System.out.println("查询到的name=" + object.get("name")); } }finally{ cursor.close(); } }}

转载于:https://my.oschina.net/huangfude/blog/335809

你可能感兴趣的文章
云时代架构阅读笔记之四
查看>>
WEB请求处理一:浏览器请求发起处理
查看>>
Lua学习笔记(8): 元表
查看>>
PHP经典算法题
查看>>
LeetCode 404 Sum of Left Leaves
查看>>
醋泡大蒜有什么功效
查看>>
hdu 5115(2014北京—dp)
查看>>
数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)...
查看>>
PHP读取日志里数据方法理解
查看>>
第五十七篇、AVAssetReader和AVAssetWrite 对视频进行编码
查看>>
Vivado增量式编译
查看>>
一个很好的幻灯片效果的jquery插件--kinMaxShow
查看>>
微信支付签名配置正确,但返回-1,调不出支付界面(有的手机能调起,有的不能)...
查看>>
第二周例行报告
查看>>
Spring学习(16)--- 基于Java类的配置Bean 之 基于泛型的自动装配(spring4新增)...
查看>>
实验八 sqlite数据库操作
查看>>
四种简单的排序算法(转)
查看>>
Quartz2D之着色器使用初步
查看>>
多线程条件
查看>>
Git [remote rejected] xxxx->xxxx <no such ref>修复了推送分支的错误
查看>>