Java 操作 MongoDB

本文介绍了如何使用MongoDB通过JSON存储数据,包括连接数据库、遍历数据库和集合、插入数据、查找数据、统计文档数量、使用光标获取文档、查询特定文档、使用条件查询、创建索引、管理数据库函数、存储JAVA对象、并发性处理等核心操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MongoDB 使用json存储数据.

package com.ys;

import java.net.UnknownHostException;
import java.util.Date;
import java.util.List;
import java.util.Set;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

/**
 * @author yansheng
 *
 */
public class HelloMongo {
	public static void main(String[] args) throws UnknownHostException,
			MongoException {
		// 1.连接Mongo
		Mongo conn = new Mongo("localhost");
		// Mongo conn = new Mongo("localhost", 27017);
		// Mongo conn = new Mongo("localhost", "mydb");
		// Mongo conn = new Mongo("localhost", 27017, "mydb");

		// 2.遍历数据库
		List<String> dbList = conn.getDatabaseNames();
		for (String s : dbList) {
			System.out.println(s);
		}
		// 3.获得db,遍历集合列表
		DB db = conn.getDB("admin");
		Set<String> colls = db.getCollectionNames();
		for (String s : colls) {
			System.out.println(s);
		}
		
		// 登录db
		boolean auth = db.authenticate("user", "password".toCharArray());

		// 4.获得一个集合,如果COLLECTION不存在,则MongoDB会自动为你创建此collection  
		DBCollection coll = db.getCollection("testCollection");

		// 5.插入数据
		BasicDBObject doc = new BasicDBObject();
		doc.put("name", "MongoDB");
		doc.put("type", "database");
		doc.put("count", 1);

		DBObject info = new BasicDBObject();
		info.put("x", 203);
		info.put("y", 102);
		doc.put("info", info);
		coll.insert(doc);

		// 6.使用findOne()查找集合中第一个文档
		/*
		 * 注意_id和_ns元素是由MongoDB自动加入你的文档。 记住:MongoDB内部存储使用的元素名是以“_”做为开始。
		 */
		DBObject myDoc = coll.findOne();
		System.out.println(myDoc);

		// 7.统计文档数量
		System.out.println(coll.getCount());

		// 8.使用光标(cursor)来获取全部文档
		DBCursor cur = coll.find();
		while (cur.hasNext()) {
			System.out.println(cur.next());
		}

		// 9.在查询中获取单一文档
		BasicDBObject query = new BasicDBObject();
		query.put("i", 71);
		cur = coll.find(query);
		while (cur.hasNext()) {
			System.out.println(cur.next());
		}

		// 10.使用条件查询获取集合
		// 例如,我们想要查询所有i>50的文档:
		BasicDBObject query_1 = new BasicDBObject();
		query_1.put("i", new BasicDBObject("$gt", 50));
		cur = coll.find(query_1);
		while (cur.hasNext()) {
			System.out.println(cur.next());
		}
		// 做20 < i <= 30的查询
		BasicDBObject query_2 = new BasicDBObject();
		query_2.put("i", new BasicDBObject("$gt", 20).append("$lte", 30));
		cur = coll.find(query_2);
		while (cur.hasNext()) {
			System.out.println(cur.next());
		}
		// 11.创建索引,指定升序(1)或降序(-1)
		coll.createIndex(new BasicDBObject("i", 1));

		// 12.获取索引列表
		List<DBObject> list = coll.getIndexInfo();
		for (DBObject o : list) {
			System.out.println(o);
		}
		// 13.MongoDB管理函数
		// 例A:获取数据库列表
		// MongoAdmin admin = new MongoAdmin();
		// for(String s : admin.getDatabaseNames()){
		// System.out.println(s);
		// }
		//
		// 例B:获取数据库对象
		// Mongo m = admin.getDB("mydb");
		//
		// 例C:删除数据库
		// admin.dropDatabase("mydb");
		
		//13.用DBObject存储JAVA对象
		// 例如,存在一个需要存储的对象类Tweet
		Tweet myTweet_1 = new Tweet();
		myTweet_1.put("user", 001);
		myTweet_1.put("message", "message");
		myTweet_1.put("date", new Date());

		coll.insert(myTweet_1);
		
		// 当一个文档从MongoDB中取出时,它会自动把文档转换成DBObject接口类型,要将它实例化为你的对象
		coll.setObjectClass(Tweet.class);
		Tweet myTweet_2 = (Tweet)coll.findOne();
		
		// 14.JAVA驱动的并发性
		db.requestStart();
		// code.........
		db.requestDone();
	}
	
}


### Java 操作 MongoDB 的基础 为了实现对MongoDB操作,在Java程序中通常会引入`mongodb-driver-sync`库。此库提供了同步驱动器,允许开发者执行基本的CRUD操作以及更复杂的查询。 #### 创建连接并获取数据库实例 建立与MongoDB服务器的连接是任何交互的第一步。这可以通过`MongoClients.create()`方法完成,该方法返回一个表示客户端连接的对象。对于本地运行的服务,默认情况下监听27017端口[^2]: ```java import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; // 创建一个新的 MongoClient 实例用于连接默认地址 (localhost) 和端口 (27017) MongoClient mongoClient = MongoClients.create(); ``` 接着可以利用获得的客户端对象调用`getDatabase(String dbName)`函数来选定特定名称下的数据库作为工作区: ```java com.mongodb.client.MongoDatabase database = mongoClient.getDatabase("test"); ``` #### 执行 CRUD 操作 ##### 插入文档 向集合内添加新记录涉及构建BSON格式的数据结构并通过适当的方法提交给目标集合。下面的例子展示了怎样往名为“users”的集合里加入一条新的用户信息[^3]: ```java import org.bson.Document; public void insertUser() { Document userDoc = new Document("name", "Alice").append("age", 30); database.getCollection("users").insertOne(userDoc); } ``` ##### 查询文档 检索已存数据同样依赖于Document类定义条件表达式,并传递至find()或findOneAndDelete()等查找接口。这里给出一段简单的代码片段用来展示如何读取所有用户的姓名列表: ```java for (Document doc : database.getCollection("users").find()) { System.out.println(doc.getString("name")); } ``` ##### 更新现有条目 当需要修改某些字段的内容时,则应该准备更新指令连同匹配模式一起交给updateMany()或者replaceOne()这样的命令处理。下述例子说明了更改年龄大于等于30岁的所有人职业为工程师的过程[^5]: ```java database.getCollection("users") .updateMany( Filters.gte("age", 30), Updates.set("job", "engineer") ); ``` ##### 删除指定项 最后如果想要移除符合条件的一条或多条记录,可借助deleteOne()或是deleteMany()来进行相应设置。比如删除名字叫Bob的所有条目的方式如下所示: ```java database.getCollection("users").deleteMany(new Document("name", "Bob")); ``` 以上就是关于使用Java语言控制MongoDB的一些基础知识和技术要点概述[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值