MongoDB 安装与卸载和java Api

一、安装

1、配置yum管理包

  1)、在路径/etc/yum.repos.d/下创建文件mongodb-org-3.4.repo

  cd /etc/yum.repos.d/

  touch mongodb-org-3.4.repo

  2)、在文件mongodb-org-3.4.repo中写入如下内容

  [mongodb-org-3.4]

  name=MongoDB Repository

  baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/

  gpgcheck=1

  enable=1

  gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

2、安装mongodb(会安装mongodb-org包及其依赖包mongodb-org-server、mongodb-org-mongos、mongodb-org-shell、mongodb-org-tools)

  数据库实例默认在/var/lib/mongo路径下,日志默认在/var/log/mongodb路径下,也可以通过修改/etc/mongod.conf文件的storage.dbPath和systemLog.path配置

  yum install -y mongodb-org

3、修改配置文件

       vim /etc/mongod.conf      修改的新路径需要赋值权限  chmod 777 -R 修改后的路径(chown -R mongod:mongod /某某)

设置ip地址与端口和数据保存目录与日志目录

4、开启mongodb服务

  service mongod start

5、通过查看日志方式,验证服务开启成功,其中有一行为:[thread1] waiting for connections on port 27017

  cat /var/log/mongodb/mongod.log

6、设置开机启动

  chkconfig mongod on

7、停止mongodb服务

  service mongod stop

8、重启mongodb服务

  service mongod restart

二、卸载

1、停止服务

  service mongod stop

2、删除安装的包

  yum erase $(rpm -qa | grep mongodb-org)

3、删除数据及日志

  rm -r /var/log/mongodb

  rm -r /var/lib/mongo

 

三、java Api

 pom.xml

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver</artifactId>
    <version>3.4.2</version>
</dependency>

基础操作代码:

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.*;
import org.bson.Document;
 
import java.text.SimpleDateFormat;
import java.util.*;
 
import static com.mongodb.client.model.Filters.*;
 
 
public class MongoDbJdbc {
    /**
     * 获取连接
     *
     * @param url
     * @param port
     * @return
     */
    public static MongoClient init(String url, int port) {
        MongoClient mongoClient = new MongoClient(url, port);
        return mongoClient;
    }
 
    /**
     * 获取数据库
     *
     * @param mongoClient 客户端连接
     * @param dbName      数据库名称
     * @return
     */
    public static MongoDatabase getDatabase(MongoClient mongoClient, String dbName) {
        MongoDatabase database = mongoClient.getDatabase(dbName);
        return database;
    }
 
    /**
     * 获取DB集合
     *
     * @param database       数据库
     * @param collectionName 集合名称
     * @return
     */
    public static MongoCollection<Document> getCollection(MongoDatabase database, String collectionName) {
        MongoCollection<Document> collection = database.getCollection(collectionName);
        return collection;
    }
 
    /**
     * 创建集合
     *
     * @param database
     * @param collectionName
     */
    public static void createCollection(MongoDatabase database, String collectionName) {
        try {
            database.createCollection(collectionName);
        } catch (Exception e) {
            System.out.println("集合已经存在");
        }
    }
 
    /**
     * 删除集合
     */
    public static void delectCollection(MongoCollection<Document> collection) {
        collection.drop();
    }
 
    /**
     * 单条插入到集合
     *
     * @param data       数据
     * @param collection db库集合
     */
    public static void insertLine(HashMap<String, Object> data, MongoCollection<Document> collection) {
        Document document = new Document();
        for (Map.Entry<String, Object> entry : document.entrySet()) {
            document.append(entry.getKey(), entry.getValue());
        }
        collection.insertOne(document);
    }
 
    /**
     * 批量插入到集合
     *
     * @param collection db库集合
     * @param max        数据集
     */
    public static void insertBatch(MongoCollection<Document> collection, int max) {
        List<Document> documents = new ArrayList<>();
        for (int i = 0; i < max; i++) {
            Document document = new Document();
            document.append("_id", i);
            document.append("t", simpleDate.format(new Date()));
            document.append("v", Math.round(Math.random() * 100) / 10.0);
            documents.add(document);
        }
        collection.insertMany(documents);
    }
 
    /**
     * 根据索引id更新数据
     *
     * @param collection
     * @param id
     * @param data
     */
    public static void updateLine(MongoCollection<Document> collection, String id, Map<String, Object> data) {
        Document document = new Document();
        for (Map.Entry<String, Object> entry : document.entrySet()) {
            document.append(entry.getKey(), entry.getValue());
        }//主键查找
        collection.updateMany(eq("_id", id), new Document("$set", document));
    }
 
    /**
     * 批量更新
     *
     * @param collection 集合对象
     * @param sum        <id,map<key,value>>
     */
    public static void updateBatch(MongoCollection<Document> collection, int sum) {
        List<WriteModel<Document>> writeModelList = new ArrayList<>();
        for (int i = 0; i < sum; i++) {
            Document updateDocument = new Document();
            Document document = new Document();
            document.append("t", simpleDate.format(new Date()));
            document.append("v", Math.round(Math.random() * 100) / 10.0);
            updateDocument.append("$set", document);//更新
            UpdateOneModel<Document> updateOneModel = new UpdateOneModel<>(Filters.eq("_id", i), updateDocument);
            writeModelList.add(updateOneModel);
        }
        collection.bulkWrite(writeModelList, new BulkWriteOptions().ordered(true));
    }
 
    public static SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}

参数解释:
$group:分组聚合
$sort:根据分组聚合后的count做倒序
$match:对分组聚合后的结果做查询筛选
$skip:分页跳过条数
$limit:返回多少条数据
allowDiskUse:true 允许使用磁盘缓存,默认为false

$group:分组聚合中参数(这里面的参数可以根据需要构建返回的字段)
_id:根据heapNum字段做groupby分组
publishDate:使用$max获取同组成员中,日期最大最新的那个
heapNum:使用$first获取同组成员中,第一条数据的heapNum
count:使用$sum统计同组成员数量

注意,这里的$match并不是只能出现在这里,可以出现2次,在$group之前出现的,是先做查询,再对查询的数据做分组,出现在$group之后,是对分组后的结果做筛选。
用到的一些参数api:https://docs.mongodb.com/v3.4/reference/operator/aggregation/

查询与删除集合数据的api,集合类似于mysql中的表:

public static void main(String[] args) {
    //参数定义
    String utl = "192.168.0.1";                           //MongoDB的ip地址
    int port = 27017;                                          //MongoDB的端口
    String databaseName = "database";           /数据库名称
    String collectionName = "test";                   //集合名称
 
    //获取资源对象
    MongoClient mongoClient = new MongoClient(utl, port);                                    //获取MongoDB客户端连接
    MongoDatabase db = mongoClient.getDatabase(databaseName);                    //获取数据库
    MongoCollection<Document> collection = db.getCollection(collectionName);    //获取集合

    List<Bson> aggregateList = new ArrayList<Bson>();
    //创建过滤器
    //删除所有符合条件的数据,Filters的方法有,gt表示大于,lt表示小于 gte,lte表示大于等于,小于等于
    Bson filter = Filters.and(//and表示两个都需要满足
            Filters.gte("data_time", "2019-10-24 10:36:04"),//字段data_time大于2019-10-24 10:36:04
            Filters.lte("data_time", "2019-10-24 10:36:06")//字段值小于
    );

   //多条件查询

  Bson match = Aggregates.match(

     Filters.and(       

               Filters.eq("code", "xxxx"),                                       //必须等于

                Filters.regex("name", "^.*" + xxx+ ".*$"),               //模糊查询

                Filters.gte("start_time", "2019-10-24 10:36:04"),   //大于等于

                Filters.lte("end_time", "2019-10-24 10:36:06")      //小于等于

   ) 

)

多条件分组

  Bson group = Aggregates.group(

            new BasicDBObject("_id","$_id")     //必须有id

                 .append("code", "$code")           //逗号前面的code和$code 必须和数据库中字段的一致

                .append("name", "$name")         //需要分组的字段依次追加即可

);

//严格按照顺序查询

aggregateList.add(match);//1.条件过滤

aggregateList.add(group);//2.分组

aggregateList.add("limit",10);//行数

aggregateList.add("skin",1);//页码

aggregateList.add(“time,-1”);//按时间倒序排

 

    //将过滤器作为条件,查找符合条件的数据文档    

AggregateIterable<Document> aggregate = collection.aggregate(aggregateList).allowDiskUse(true);

MongoCursor<Document> cursor = aggregate.iterator();

while(cursor.hasNext()) {       

    Document document = cursor.next();

    logger.info("查询结果:"+document.toJson());    //输出结果

}


    //删除符合过滤器条件的数据
    collection.deleteMany(filter);
    mongoClient.close();//关闭MongoDB的连接,释放资源
}

MongoDB创建索引:

/**
 * 创建索引
 */
List<BasicDBObject> bsons = new ArrayList<BasicDBObject>();
bsons.add(new BasicDBObject().append("data_time", 1));//1升序,-1降序
for (BasicDBObject bson : bsons) {
    collection.createIndex(bson);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值