Mongodb 基本使用-增删改查

package com.test;

import java.util.ArrayList;
import java.util.List;

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.sun.javafx.geom.transform.GeneralTransform3D;
import com.sun.media.jfxmedia.events.AudioSpectrumListener;

import org.bson.Document;

/**
 * http://www.runoob.com/mongodb/mongodb-java.html
 */
public class MongodbUtil {
	public static final String MONGODB_HOST = "192.168.10.101";
	public static final int MONGODB_PORT = 27017;
	public static final String MONGODB_DB = "ssm";
	public static final String MONGODB_COLLECTION = "config";
	public static MongoClient mMongoClient = null;
	public static MongoDatabase mMongoDatabase = null;
	public static MongoCollection<Document> mMongoCollection;
	public MongoClient getMongoClient() {
		if (mMongoClient == null) {
			// 连接到 mongodb 服务
			mMongoClient = new MongoClient(MONGODB_HOST, MONGODB_PORT);
		}
		return mMongoClient;
	}

	public MongoDatabase getMongoDatabase(String db) {

		// 连接到数据库
		mMongoDatabase = mMongoClient.getDatabase(db);
		System.out.println("Connect to database:"+db+" successfully");

		return mMongoDatabase;
	}

	public void connectDbWithPwd() {
		try {
			// 连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
			// ServerAddress()两个参数分别为 服务器地址 和 端口
			ServerAddress serverAddress = new ServerAddress(MONGODB_HOST, MONGODB_PORT);
			List<ServerAddress> addrs = new ArrayList<ServerAddress>();
			addrs.add(serverAddress);

			// MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
			MongoCredential credential = MongoCredential.createScramSha1Credential("username", "databaseName",
					"password".toCharArray());
			List<MongoCredential> credentials = new ArrayList<MongoCredential>();
			credentials.add(credential);

			// 通过连接认证获取MongoDB连接
			MongoClient mMongoClient = new MongoClient(addrs, credentials);

			// 连接到数据库
			MongoDatabase mMongoDatabase = mMongoClient.getDatabase(MONGODB_DB);
			System.out.println("Connect to database successfully");
		} catch (Exception e) {
			System.err.println(e.getClass().getName() + ": " + e.getMessage());
		}
	}

	public void createCollection(String collection) {
		try {
			System.out.println("Connect to database successfully");
			mMongoDatabase.createCollection(collection);
			System.out.println("集合 "+collection+" 创建成功");

		} catch (Exception e) {
			System.err.println(e.getClass().getName() + ": " + e.getMessage());
		}
	}

	public MongoCollection<Document> getCollection(String collectionName) {
		mMongoCollection = mMongoDatabase.getCollection(collectionName);
		System.out.println("集合 "+collectionName+" 选择成功");
		return mMongoCollection;
	}

	public void insertDocument(String collectionName) {
		try {
			// 插入文档
			/**
			 * 1. 创建文档 org.bson.Document 参数为key-value的格式 2. 创建文档集合List<Document> 3.
			 * 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用
			 * mongoCollection.insertOne(Document)
			 */
			Document document = new Document("title", "MongoDB").append("description", "database").append("likes", 100)
					.append("by", "Fly");
			List<Document> documents = new ArrayList<Document>();
			documents.add(document);
			mMongoCollection.insertMany(documents);
			System.out.println("文档插入成功");
		} catch (Exception e) {
			System.err.println(e.getClass().getName() + ": " + e.getMessage());
		}
	}

	public void searchDocument(String collectionName) {
		try {
			
			System.out.println("集合 test 选择成功");

			// 检索所有文档
			/**
			 * 1. 获取迭代器FindIterable<Document> 2. 获取游标MongoCursor<Document> 3. 通过游标遍历检索出的文档集合
			 */
			FindIterable<Document> findIterable = mMongoCollection.find();
			MongoCursor<Document> mongoCursor = findIterable.iterator();
			while (mongoCursor.hasNext()) {
				System.out.println(mongoCursor.next());
			}

		} catch (Exception e) {
			System.err.println(e.getClass().getName() + ": " + e.getMessage());
		}
	}

	public void updateDocument(String collectionName) {
		try {
		
			System.out.println("集合 test 选择成功");

			// 更新文档 将文档中likes=100的文档修改为likes=200
			mMongoCollection.updateMany(Filters.eq("likes", 100), new Document("$set", new Document("likes", 200)));
			// 检索查看结果
			FindIterable<Document> findIterable = mMongoCollection.find();
			MongoCursor<Document> mongoCursor = findIterable.iterator();
			while (mongoCursor.hasNext()) {
				System.out.println(mongoCursor.next());
			}

		} catch (Exception e) {
			System.err.println(e.getClass().getName() + ": " + e.getMessage());
		}
	}

	public void deleteDocument() {
		try {
			// 删除符合条件的第一个文档
			mMongoCollection.deleteOne(Filters.eq("likes", 200));
			// 删除所有符合条件的文档
			mMongoCollection.deleteMany(Filters.eq("likes", 200));
			// 检索查看结果
			FindIterable<Document> findIterable = mMongoCollection.find();
			MongoCursor<Document> mongoCursor = findIterable.iterator();
			while (mongoCursor.hasNext()) {
				System.out.println(mongoCursor.next());
			}

		} catch (Exception e) {
			System.err.println(e.getClass().getName() + ": " + e.getMessage());
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MongodbUtil mongodb = new MongodbUtil();
		mMongoClient = mongodb.getMongoClient();
		mMongoDatabase = mongodb.getMongoDatabase(MONGODB_DB);
		mMongoCollection = mongodb.getCollection(MONGODB_COLLECTION);
		System.out.println("mMongoCollection:"+mMongoCollection);
		mongodb.insertDocument(MONGODB_COLLECTION);
		
	}

}

通过 _id 获取数据

Query<Config> query = ds.createQuery(Config.class).field("_id").equal(new ObjectId(id));

排序

Query<Config> query = ds.createQuery(Config.class);

		long total = query.countAll();
		List<Config> pageData = query.order("-key").offset(pageIndex * pageSize).limit(pageSize).asList();
		

查询数据表,打印列数据

DBObject dbObject = new BasicDBObject();
    dbObject.put("isHot", true);
    DBObject fieldObject = new BasicDBObject();
    fieldObject.put("zhName", true);
    fieldObject.put("_id", true);
    Query query = new BasicQuery(dbObject, fieldObject);
    List<Locality> hotCities=mongoTemplate.find(query, Locality.class);
    return hotCities;


DBCollection dbCollection =mongoClient.getCollection("test");
DBCursor dbCursor = dbCollection.find();
while(dbCursor.hasNext()) {
	BasicDBObject row = (BasicDBObject) dbCursor.next();//获取表内数据
	if(row != null){
	    System.out.println("name:--"+row.getString("name"));
	    System.out.println("age:--"+row.getString("age"));
	 }
}
dbCursor.close();

MongoDB获取客户端

private MongoClient getMongoClient() {
String dbUri = "mongodb://127.0.0.1:12701/test"
		try {
			if (null != mongoClient) {
				return mongoClient;
			} else {
				MongoClientOptions.Builder builder = MongoClientOptions.builder();
				builder.socketKeepAlive(true);
				builder.socketTimeout(20000);
				builder.connectTimeout(20000);
				builder.maxWaitTime(12000000);
				builder.heartbeatFrequency(2000);// 心跳频率
				MongoClientURI uri = new MongoClientURI(dbUri, builder);
				// uri.get
				mongoClient = new MongoClient(uri);
				return mongoClient;
			}
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

https://ask.csdn.net/questions/269228
https://blog.csdn.net/zhanglu1236789/article/details/69525012?locationNum=2&fps=1

https://blog.csdn.net/u010812864/article/details/70752540
https://blog.csdn.net/qq_16504067/article/details/72779448
https://blog.csdn.net/sunshinegyan/article/details/78328596
https://blog.csdn.net/wab719591157/article/details/73379844
https://blog.csdn.net/shenjianxz/article/details/75115175
https://blog.csdn.net/qq_35981283/article/details/77826537
https://www.cnblogs.com/Laymen/p/6122108.html
https://blog.csdn.net/yibing548/article/details/45692379
http://daimajia.iteye.com/blog/2322824 mongodb注解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值