Java MongoDB

package com.mongodb.test;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public final class MongoDB {

public interface MongoObject {
    String getName();
    void toDocument(Document doc);

}

public interface IdObject extends MongoObject {
    String getId();
}

private static  MongoDB theInstance = new MongoDB();


private static MongoClient mongo;
    private static final String dbName = "local";

private MongoDB() {
    }
    
    public  static void init(String host, int port, String user, String pwd) {
        assert mongo == null;
        
        if (host == null || host.isEmpty())
            host = "localhost";
        if (port == 0)
            port = 27017;
        
        mongo = new MongoClient(host, port);
        System.out.println("INFO:init mongodb " + host + " " + port);
        
        
    }
    
    public static MongoDB getInstance() {
        assert mongo != null;
        return theInstance;
        
    }
    
    public boolean updateById(IdObject record) {
        assert mongo != null;
        
        try  {
            MongoDatabase db = mongo.getDatabase(dbName);
            
            MongoCollection<Document> collect = db.getCollection(record.getName());
        
            Document select = new Document();
            select.put("id", record.getId());
            
            Document doc = new Document();
            record.toDocument(doc);
            collect.replaceOne(select, doc);
            
        }
        catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        
        return true;
    }
    
    public long checkById(String collectName, String id) {
        assert mongo != null;
        
        try  {
            MongoDatabase db = mongo.getDatabase(dbName);
            
            MongoCollection<Document> collect = db.getCollection(collectName);
        
            Document select = new Document();
            select.put("id", id);
            
            long count = collect.count(select);
            
            return count;
            
        }
        catch (Exception e) {
            e.printStackTrace();
            return -1;
        }
        
    }
    
    public boolean delById(String collectName, String id) {
        assert mongo != null;
        
        try  {
            MongoDatabase db = mongo.getDatabase(dbName);
            
            MongoCollection<Document> collect = db.getCollection(collectName);
        
            Document select = new Document();
            select.put("id", id);
            
            collect.deleteOne(select);
            
        }
        catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        
        return true;
    }
    
    public boolean insert(MongoObject record) {
        assert mongo != null;
        
        try  {
            MongoDatabase db = mongo.getDatabase(dbName);
            
            MongoCollection<Document> collect = db.getCollection(record.getName());
        
            Document doc = new Document();
            record.toDocument(doc);
            
            
            collect.insertOne(doc);
            
            System.out.println("DEBUG:insert OK");
            
        }
        catch (Exception e) {
            e.printStackTrace();
            System.out.println("DEBUG:insert FAILED ****************");
            return false;
        }
        
        return true;
      
    }
}

时间: 2024-10-02 18:41:48

Java MongoDB的相关文章

那位帮忙提供一个java mongodb多个collection进行mapreduce的操作。

原文:那位帮忙提供一个java mongodb多个collection进行mapreduce的操作. 代码下载地址:http://www.zuidaima.com/share/1550463227890688.htm 我想统计下每个月某个视频的播放量,需要跨日表去mapreduce. 那位帮忙提供一个java mongodb多个collection进行mapreduce的操作.,布布扣,bubuko.com

【MongoDB数据库】Java MongoDB CRUD Example

上一篇我们讲了MongoDB 的命令入门初探,本篇blog将基于上一篇blog所建立的数据库和表完毕一个简单的Java MongoDB CRUD Example,利用Java连接MongoDB数据库.并实现创建数据库.获取表.遍历表中的对象.对表中对象进行CRUD操作等例程. 1.下载MongoDB Java 支持驱动包 [gitHub下载地址]https://github.com/mongodb/mongo-java-driver/downloads 2.建立Javaproject,并导入ja

java MongoDB查询(二)复杂查询

前言 在上篇<java MongoDB查询(一)简单查询>中我们简单了解了下查询,但是仅仅有那些查询是不够用的,还需要复杂的查询,这篇就这点进行叙述. 1.数据结构 集合:firstCollection 数据内容: { "_id" : ObjectId("55adba52fa1f3cf038c2aea6"), "name" : "user0", "age" : 22, "sex&quo

java MongoDB分页优化

最近项目在做网站用户数据新访客统计,数据存储在MongoDB中,统计的数据其实也并不是很大,1000W上下,但是公司只配给我4G内存的电脑,让我程序跑起来气喘吁吁...很是疲惫不堪. 最常见的问题莫过于查询MongoDB内存溢出,没办法只能分页查询.这种思想大家可能都会想到,但是如何分页,确实多有门道! 网上用的最多的,也是最常见的分页采用的是skip+limit这种组合方式,这种方式对付小数据倒也可以,但是对付上几百上千万的大数据,却只能望而兴叹... 经过网上各种查找资料,寻师问道的,发现了

Java MongoDB : Save image example

Java MongoDB : Save image example In this tutorial, we show you how to save an image file into MongoDB, via GridFS API. The GridFS APIs are able to serve other binary files as well, like video and music files. 译:在本教程中,我们将向你展示如何通过 GridFS API 保存一个图片到Mo

Java mongodb api疑问之MongoCollection与DBCollection

在学习Java mongodb api时发现,可以调用不同的java mongodb api来连接数据库并进行相关操作. 方式一: 该方式使用mongoClient.getDB("xxx")来获取DB对象,然后通过getCollection("xxx")获取相应的集合.其他操作略. import com.mongodb.BasicDBObject; import com.mongodb.DBCollection; import com.mongodb.DBObjec

Java MongoDB Driver 3.x - Quickly Start

Maven Dependency: <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.2.2</version> </dependency> Make a Connection The following example shows five ways to conn

java MongoDB查询(一)简单查询

前言 MongoDB的java驱动提供了查询的功能,查询条件也是bson对象,这篇就看下怎么进行简单的数据查询 1.数据结构 集合:firstCollection 数据内容: { "_id" : ObjectId("55adba52fa1f3cf038c2aea6"), "name" : "user0", "age" : 22, "sex" : 0 } { "_id"

spring java mongodb geo 位置搜索服务 示例

1.配置 pom.xml,在原有的spring项目中添加以下2个即可. <span style="white-space:pre"> </span><!-- mongo db 驱动--> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3

Java mongodb System.js 应用

近期遇到了一个比较麻烦的查询,就想用mongodb system.js实现,有点类似关系型数据库的存储过程的味道. system.js是每个数据库都会有的一个特殊集合,用来存放js的变量,可以在db.eval,mapreduce,where多个地方全局调用,比较方便. 下面是mongodb脚本和java 调用部分代码: db.system.js.remove({_id:"calculateIdleRoomByTime"}); // 这个可以将正常的会议室查询出来,但是自己实现Java