mongoDB2.6,java使用详解
本文使用的环境是:win7_64+Eclipse+maven 一、准备工作 下载java驱动包 驱动包下载地址:http://mvnrepository.com/artifact/org.mongodb/mongo-java-driver mongoDB下载:http://www.mongodb.org/ 在线api:http://docs.mongodb.org/manual/applications/dr
本文使用的环境是:win7_64+Eclipse+maven一、准备工作
下载java驱动包驱动包下载地址:http://mvnrepository.com/artifact/org.mongodb/mongo-java-driver
mongoDB下载:http://www.mongodb.org/
在线api:http://docs.mongodb.org/manual/applications/drivers/
二、安装Mongo
1.windows下安装方式:安装Mongo数据库:
第一步:下载安装包:如果是win系统,注意是64位还是32位版本的,请选择正确的版本。
第二步:新建目录“D:\MongoDB”,解压下载到的安装包,找到bin目录下面全部.exe文件,拷贝到刚创建的目录下。
第三步:在“D:\MongoDB”目录下新建“data”文件夹,它将会作为数据存放的根文件夹。
配置Mongo服务端:
打开CMD窗口,按照如下方式输入命令:
> d:
> cd D:\MongoDB
> mongod --dbpath D:\MongoDB\data
启动成功后从浏览器访问:http://localhost:27017/
标明windows下的mongodb已经启动成功;
2.linux安装方式:
下载后解压确保数据库目录大小剩余空间在3G以上;
这里采用配置文件方式启动:在mongodb的根目录创建一个名为:mongodb.conf的文件,内容如下:
#fork=true #以守护进程的方式运行,创建服务器进程 ##master=true #单主从配置时设为主服务器 ##salve=true ##单主从配置时设为从服务器 #replSet=blort #设置富本集的名字 #shardsvr=true #设置是否分片 #repairpath = /mongodb2.6.3/repair #pidfilepath = /mongodb2.6.3/mongodb.pid #sysinfo = true #verbose = true #cpu = true #Network and security set #Management #nohttpinterface = true #rest = true #syncdelay = 5 #Directory and relavent set dbpath = /mongodb2.6.3/data #数据库路径 logpath = /mongodb2.6.3/logs/mongodb.log #日志输出文件路径 logappend = true #日志输出方式 directoryperdb = true noauth = true port = 8888 #端口号 maxConns = 1024 fork = true quota = true quotaFiles = 1024 nssize = 16
启动方式如下:/mongodb2.6.3/bin/mongod -f /mongodb2.6.3/mongodb.conf
记得开启linux的访问端口:
#vi /etc/sysconfig/iptables
yy复制一行
p粘贴
修改端口
#service iptables restart
设置开机自启动
#echo /mongodb2.6.3/bin/mongod -f /mongodb2.6.3/mongodb.config >>/etc/rc.local
数据库启动完成,接下来是创建数据库和集合:
mongo --port 8888
> show dbs
admin (empty)
local 0.078GB
> use admin(切换管理用户)
switched to db admin
> db.mymongo(创建数据库)
admin.mymongo
> db.addUser("root","root")(添加用户)
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: { "user" : "root", "roles" : [ "root" ] }
> db.auth("root","root")(添加登陆用户)
1
> db.createCollection("t_users")(添加表)
{ "ok" : 1 }
> show collections(显示表)
system.indexes
system.users
system.version
t_users
> db.t_users.save({age:21})(存储数据)
WriteResult({ "nInserted" : 1 })
> db.t_users.find()(查询所有数据)
{ "_id" : ObjectId("53a2e45e4a674863b4ac5398"), "age" : 21 }
mongodb 删除数据库
use mymongo;
db.dropDatabase();
mongodb删除表
db.t_users.drop();
MongoDB服务停止:
在linux下大家停止很多服务都喜欢直接kill -9 PID,但是对于MongoDB如果执行了kill -9 PID,在下次启动时可能提示错误,导致服务无法启动,这个时候可以通过执行:
Java代码
rm -f /app/hadoop/db/mongod.lock 也即删除指定数据目录下的mongod.lock文件即可。
正常停止方法:
kill -2 PID
或者
Java代码
./mongo -host ip:port 先连接需要停止的服务,然后:
Java代码
>use admin >db.shutdownServer();
这样也可以正常停止服务。
三、Java操作MongoDB示例
1、 建立Test.java,完成简单的mongoDB数据库操作
try { Mongo mg = new MongoClient("192.168.186.129", 8888); DB db = mg.getDB("mymongo"); // 用于判断用户登录 // if(!db.authenticate("sdap", "sdap123".toCharArray())){ // 方法已经不建议使用 // } Set<String> collectionNames = db.getCollectionNames(); for (String string : collectionNames) { System.out.println(string); } DBCollection collection2 = db.getCollection("t_users2"); collection2 = db.getCollection("t_users2"); CarPasitionObj u = new CarPasitionObj(); u.setLa(1231d); u.setLo(42342d); u.setPn("京1aaa"); u.setTp(12); String obj2Json = JsonUtils.getSingletonInstance().obj2Json(u); BasicDBObject dbObject1=new BasicDBObject(); dbObject1.put("key", "123131"); dbObject1.put("value", obj2Json); collection2.save(dbObject1); <pre name="code" class="java"> BasicDBObject dbObject=new BasicDBObject(); dbObject.put("key", "123131"); DBCursor find = collection2.find(dbObject); while (find.hasNext()) { DBObject next = find.next(); String key = (String)next.get("key"); String json = (String)next.get("value"); System.out.println(key); CarPasitionObj formJson = JsonUtils.getSingletonInstance().formJson(json, CarPasitionObj.class); System.out.println(formJson.getPn()); } } catch (UnknownHostException e) { e.printStackTrace(); }
下面贴上我自己的mongodb的工具类:
/** * Project Name:main * File Name:MongodbCacheManagerUtil.java * Package Name:com.hdsx.taxi.driver.cq.cache * Date:2014年4月9日下午12:49:55 * Copyright (c) 2014, sid Jenkins All Rights Reserved. * * */ package com.hdsx.taxi.driver.cq.mongodb; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import com.hdsx.taxi.driver.cq.module.InitServletModule; import com.hdsx.taxi.driver.cq.tcp.util.JsonUtils; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoClient; /** * ClassName:MongodbCacheManagerUtil * Function: TODO ADD FUNCTION. * Reason: TODO ADD REASON. * Date: 2014年4月9日 下午12:49:55 * @author sid * @see */ public class MongodbManagerUtil { private static final Logger logger = Logger.getLogger(MongodbManagerUtil.class); private Mongo mg = null; private DB db = null; private volatile static MongodbManagerUtil singleton = null; public static final String KEY = "key"; public static final String VALUE = "value"; public static MongodbManagerUtil getSingletonInstance() { if (singleton == null) { synchronized (MongodbManagerUtil.class) { if (singleton == null) { singleton = new MongodbManagerUtil(); } } singleton = new MongodbManagerUtil(); } return singleton; } private MongodbManagerUtil() { if (logger.isDebugEnabled()) { logger.debug("MongodbCacheManagerUtil() - start "); //$NON-NLS-1$ } try { mg = new MongoClient("192.168.186.129", 8888); db = mg.getDB("mymongo"); } catch (UnknownHostException e) { e.printStackTrace(); } if (logger.isDebugEnabled()) { logger.debug("MongodbCacheManagerUtil() - end"); //$NON-NLS-1$ } } /** * * getCache:(获取缓存对象). * * @author sid * @param name * @return */ public DBCollection getCache(String name){ return this.db.getCollection(name); } /** * * put:(在指定缓存对象中加入需要缓存的对象). * * @author sid * @param cacheName * @param key * @param value */ public void put(String cacheName, String key, Object value) { DBCollection cache = this.db.getCollection(cacheName); String obj2Json = JsonUtils.getSingletonInstance().obj2Json(value); BasicDBObject obj = new BasicDBObject(); obj.put(MongodbManagerUtil.KEY, key); obj.put(MongodbManagerUtil.VALUE, obj2Json); BasicDBObject basicDBObject = new BasicDBObject(MongodbManagerUtil.KEY, key); int size = cache.find(basicDBObject).count(); if (size==0) { cache.save(obj); }else{ cache.update(basicDBObject, obj); } } /** * * get:(根据key从指定缓存对象中获取对象). * * @author sid * @param cacheName * @param key * @return */ public <T> T get(String cacheName, String key, Class<T> classOfT) { DBCollection cache = this.db.getCollection(cacheName); List<DBObject> array = cache.find(new BasicDBObject(MongodbManagerUtil.KEY, key)).toArray(); if (array == null||array.size()==0) { return null; } DBObject dbObject = array.get(0); String json = (String)dbObject.get(MongodbManagerUtil.VALUE); return JsonUtils.getSingletonInstance().formJson(json, classOfT); } /** * * remove:(从指定缓存对象中清除对象). * * @author sid * @param cacheName * @param key */ public void remove(String cacheName, String key) { DBCollection cache = this.db.getCollection(cacheName); cache.remove(new BasicDBObject(MongodbManagerUtil.KEY,key)); } /** * * getKeys:(获取keys列表). * * @author sid * @param cacheName * @return */ public List<String> getKeys(String cacheName){ List<String> list = new ArrayList<String>(); DBCollection cache = this.db.getCollection(cacheName); DBCursor find = cache.find(); while (find.hasNext()) { DBObject next = find.next(); String key = (String) next.get(MongodbManagerUtil.KEY); list.add(key); } return list; } /** * * containsKey:(判断消息是否存在). * * @author sid * @param cacheName * @param key * @return */ public Boolean containsKey(String cacheName,String key){ DBCollection cache = this.db.getCollection(cacheName); BasicDBObject basicDBObject = new BasicDBObject(MongodbManagerUtil.KEY, key); int size = cache.find(basicDBObject).count(); if (size==0) { return false; }else{ return true; } } } 除了save、insert、update;mongodb还有remove等操作
其中find方法可以指定查询条件:
大于等于:$gte
小于等于:$lte
不等于:$ne
demo:users.find(new BasicDBObject("age", new BasicDBObject("$gte", 24)))

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。
