一.MongoDB安装和启动
widndows和linux基本同样
1.下载数据库,
linux:mongodb-linux-x86_64-ubuntu1404-3.0.3.tgz
2.解压文件,而且放置到合适的位置
tar -vxf mongodb-linux-x86_64-ubuntu1404-3.0.3.tgz
mv mongodb-linux-x86_64-ubuntu1404-3.0.3 /usr/local/mongodb
3.创建必要得目录以及文件
数据库目录:/usr/local/mongodb/data/db
日志文件:/usr/local/mongodb/data/log/mongodb.log
完了之后记得给目录和文件授权,否则服务开不起来.
4.设置数据库位置以及日志位置而且开启服务:
bin(linux)->./mongod --port 27017 --dbpath /usr/local/mongodb/data/db --logpath /usr/local/mongodb/data/log/mongodb.log
linux下注意文件及和文件读写权限.当然开启服务还有非常多參数,不一一列举.
bin(win)->mongod --port 27017 --dbpath "D:\Program Files\MongoDB\Server\3.0\data\db" --logpath "D:\Program Files\MongoDB\Server\3.0\data\log\MongoDB.log"
5.连接数据库:
bin(linux)->./mongo
bin(win)->mongo.exe
注意:在windows下创建目录以及日志文件不再说明操作过程,非常easy.另一点是在服务启动以后,不要关闭启动服务的界面,也不能Ctrl+C,连接数据库的时候须要新起窗体.当然也能够让服务后台执行.后台执行命令:nohup ./mongod --port 27017 --dbpath /usr/local/mongodb/data/db --logpath /usr/local/mongodb/data/log/mongodb.log &
6.通过图形界面的client连接mongodb
windows下可选得比較多,包含robomongo,mongoVUE等等,linux下可用robomongo.直接去官网上下载然后安装就可以.robomongo的优势是能够直接在软件中敲shell命令,而且有提示;mongoVUE的优势是查询截面清晰,不用敲完整的复杂得shell命令.
7.mongodb的其它脚本命令
备份:mongodump/恢复:mongorestore
导入数据:mongoimport -d dbName -c collectionName --file filePath;还有其它非常多可选參数
导出数据:mongoexport -d dbName -c collectionName -o filePaht;还有其它非常多可选參数
导入导出数据默认都是json格式的文件,当然为了适应和其它数据库的数据交互。可选择导入导出的文件为CVS文件。
二.MongoDB的简单使用
使用mongoDB进行CRUD操作,就是通过运行响应的shell语句。所以实质上是对shell语句的使用.首先须要了解mongoDB的几种简单对象:db,collection,document.
db:数据库对象,等同于关系数据库中的数据库对象
collection:集合对象,等同于关系数据库中的表
document:文档对象。等同于关系数据库中表中的一行记录
1、对数据库的操作:
>db;//查看当前使用的是那个数据库
>show dbs;//展示全部的数据库
>use dbName;//使用某个数据库,假设数据库不存在,就创建数据库,所以创建数据库也是使用这个命令
>db stats();//查看数据库当前状态信息
>db.dropDatabase();//删除当前的数据库
2、对集合的操作:
>db.createCollection(collectionName,option);//collectionName是集合名称,option是可选參数,包含数据库大小等。
>db.collectionName.drop();//删除集合。当中collectionName是集合的名称
3、对文档的操作:
>db.collectionName.insert(document);//向集合中插入数据,当中document(Json)是一个json对象或者数组
>db.collectionName.find(condition);db.collectionName.findOne();db.collectionName.find().pertty();
//查询记录,当中condition(Json)为过滤条件。假设不添表示全部。pertty()表示输出格式优化,find还有非常多具体的处理后面介绍。
>db.collectionName.update(condition,updateDate);//更新记录。当中condition(Json)为过滤条件json格式。
updateDate为待更新的数据
//>db.mycol.update({"a":1},{$set:{"b":"B"}});将mycol集合中a字段为1的对象的b字段改为"B"
>db.collectionName.remove(condition,justOne);//删除记录,当中condition(Json)为过滤条件。justOne(boolean)表示是否仅仅删除第一条,假设都不添,表示清空集合
>db.collectionName.find().skip(num).limit(num);//分页查询,当中num(Number)是起始页和每页大小。
>db.collectionName.find(condition,{Key:isHead});//投影,第二个json表示某个字段是否隐藏,isHead(0/1)表示
>db.collectionName.find().sort({Key:upOrDown});//结果排序,key为排序keyword,upOrDown(-1/1)表示升序还是降序
>db.collectionName.ensureIndex({key:upOrDown});//建立索引。key为索引字段。upOrDown(-1/1)表示升序还是降序
>db.collectionName.aggregate(options);//聚集函数。options(JsonArray)有多种可选。
//db.mycol.aggregate([{$group:{field:"$by_field",total:{$sum:1}}}]);//依照by_field字段分组,显示field列和total列
三.Java操作MongoDB:
在java操作mongo的时候。首先须要有jar包支持。假设使用mave,依赖例如以下:
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.3.0.RELEASE</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>2.11.1</version> </dependency>
几个基本java对象的说明例如以下:
Mongo:数据库连接对象
Mongo monge = new Mongo("localhost",portl);
DB:数据库对象
DB db = monge.getDB("dbName");
DBCollection:集合对象
DBCollection collection = db.getCollection("collectionName");
BasicDBObject:文档对象
BasicDBObject basicDBObject = new BaseDBObject();
DBObject:文档对象的超类
DBObject dbObject = (DBObject)JSON.parse("json");
DBCursor:操作过程中的游标
DBCursor cursor = collection.find();
DBCursor cursor = collection.find("conditionJson");
详细使用代码例如以下:
@Test public void testMongo() throws UnknownHostException { Mongo mongo = new MongoClient("127.0.0.1", 27017);// 数据库连接 DB db = mongo.getDB("test");// 数据库对象 DBCollection coll1 = db.getCollection("coll1");// 获取集合对象 DBCollection coll2 = db.createCollection("coll2", null); Set<String> collSet = db.getCollectionNames(); DBObject doc1 = new BasicDBObject("a", 1);// 数据库文档对象 doc1.put("b", "B"); DBObject doc2 = (DBObject) JSON.parse("{\"a\":2,\"b\":\"B\"}"); // 插入数据 coll1.insert(doc1, doc2); // 改动数据 DBObject update = (DBObject) JSON.parse("{\"a\":2,\"b\":\"updateB\"}"); coll1.update(new BasicDBObject("a", 2), update, true, false); Map<String, Object> map = new HashMap<String, Object>(); map.put("c", "updateC"); map.put("d", 4); coll1.update(new BasicDBObject("a", 1), new BasicDBObject(map)); // 查询文档对象 DBObject ref = (DBObject) JSON.parse("{\"b\":\"updateB\"}"); DBCursor cursor = coll1.find(ref); while (cursor.hasNext()) { DBObject obj = cursor.next(); int valuea = (Integer) obj.get("a"); String valueb = (String) obj.get("b"); System.out.println(valuea + "-" + valueb); System.out.println(obj); } // 删除数据 coll1.remove(new BasicDBObject("a", 1)); coll1.drop();// 清除数据 }