TestMongodb

创建时间:2016/11/22 15:24
更新时间:2016/11/22 15:25

package ali;

/*import static com.mongodb.client.model.Filters.*;
import static com.mongodb.client.model.Updates.*;*/

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.bson.Document;
import org.bson.types.ObjectId;

import com.mongodb.Block;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
import com.mongodb.client.gridfs.model.GridFSDownloadByNameOptions;
import com.mongodb.client.gridfs.model.GridFSFile;
public class TestMongodb {
    public static void main(String[] args) throws Exception {
        MongoClient mongoClient = new MongoClient("127.0.0.1" , 27017 );
        MongoDatabase db = mongoClient.getDatabase("mydb");
        MongoCollection<Document> col = db.getCollection("foo");
//        insertM(db);
        MongoCursor<Document> cursor ;
        Document doc = new Document();
        // 查询全部
        /*cursor = col.find().iterator();
        try {
            while (cursor.hasNext()) {
                System.out.println(cursor.next().toJson());
            }
        } finally {
            cursor.close();
        }*/

        /*// 使用查询条件
        // 首先导入 import static com.mongodb.client.model.Filters.*;

        doc = col.find(eq("i", 5)).first(); // i 等于5 的第一个文档
        System.out.println(doc.toJson());*/

        /*cursor = col.find(and(gt("i", 5), lte("i", 10))).iterator();

        try {
            while (cursor.hasNext()) {
                System.out.println(cursor.next().toJson());
            }
        } finally {
            cursor.close();
        }*/


        // 排序
//        doc = col.find(exists("i")).sort(descending("i")).first();
//        System.out.println(doc.toJson());

        // 更新一个
//        import static com.mongodb.client.model.Updates.*;
//        col.updateOne(eq("i", 1), set("i", 110));

        // 更新多个
//        UpdateResult updateResult = col.updateMany(lt("i", 20), set("i", 10));
//        System.out.println(updateResult.getModifiedCount());

        // 删除一个
//        col.deleteOne(eq("i", 10));

        // 删除多个
//        DeleteResult deleteResult = col.deleteMany(lte("_id", 10));
//        System.out.println(deleteResult.getDeletedCount());

        // 批量写入操作
//        List<WriteModel<Document>> writes = new ArrayList<WriteModel<Document>>();
//        writes.add(new InsertOneModel<Document>(new Document("_id", 11)));
//        writes.add(new InsertOneModel<Document>(new Document("_id", 12)));
//        writes.add(new InsertOneModel<Document>(new Document("_id", 13)));
//        writes.add(new UpdateOneModel<Document>(new Document("_id", 1), new Document("$set", new Document("x", 2))));
//        writes.add(new DeleteOneModel<Document>(new Document("_id", 1)));
//        writes.add(new ReplaceOneModel<Document>(new Document("_id", 3), new Document("_id", 3).append("x", 4)));

//        col.bulkWrite(writes);

//        col.drop();
////
//        col.bulkWrite(writes, new BulkWriteOptions().ordered(false));
//        collection.find().forEach(printBlock);

        // 删除数据库
//        db.drop();


//        GridFSBucket gridFSBucket = GridFSBuckets.create(db);
//        File file = new File("D:/test.txt");
//        if(!file.exists()) file.createNewFile();
//        InputStream upload = new FileInputStream(file);
//        ObjectId fileId = gridFSBucket.uploadFromStream("test.txt", upload);
//        System.out.println("上传成功 fileID:" + fileId);

        // 查看上传的文件列表
//        gridFSBucket.find().forEach(new Block<GridFSFile>() {
//            @Override
//            public void apply(final GridFSFile gridFSFile) {
//                System.out.println(gridFSFile.getFilename());
//            }
//        });

        // 下载一个文件通过FileId
//        FileOutputStream streamToDownloadTo = new FileOutputStream("d:/test3.txt");
//        gridFSBucket.downloadToStream(new ObjectId("5833efd56d660635003ee6ac"), streamToDownloadTo);
//        streamToDownloadTo.close();

        // 通过文件名下载一个文件
//        streamToDownloadTo = new FileOutputStream("/tmp/test.txt");
//        GridFSDownloadByNameOptions downloadOptions = new GridFSDownloadByNameOptions().revision(0);
//        gridFSBucket.downloadToStreamByName("test.txt", streamToDownloadTo, downloadOptions);
//        streamToDownloadTo.close();

        // 根据FileId重命名和删除文件
//        gridFSBucket.rename(new ObjectId("5833efd56d660635003ee6ac"), "test1.txt");
//        gridFSBucket.delete(new ObjectId("5833efd56d660635003ee6ac"));
    }

//    插入
    private static void insertM(MongoDatabase db) {
        MongoCollection<Document> col = db.getCollection("foo1");
        // 单个插入
        Document doc = new Document("name", "MongoDB").append("type", "database");
        col.insertOne(doc);
        // 可以把JSON 字符串直接解析成Document
        doc = Document.parse("{'name':'Java', 'type':'language'}");
        col.insertOne(doc);

        // 插入多个文档
        List<Document> documents = new ArrayList<Document>();
        for(int i=0; i<10; i++){
            documents.add(new Document("i", i));
        }
        col.insertMany(documents);
    }

}