欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MongoDB原生态API使用 + 查询文档并显示指定字段

程序员文章站 2022-04-15 22:14:06
...

一、pom依赖


<properties>
	<mongodb.version>3.6.3</mongodb.version>
</properties>
<dependencies>
	<dependency>
		<groupId>org.mongodb</groupId>
		<artifactId>mongo-java-driver</artifactId>
		<version>${mongodb.version}</version>
		<!--$NO-MVN-MAN-VER$-->
	</dependency>
	<dependency>
		<groupId>org.mongodb</groupId>
		<artifactId>bson</artifactId>
		<version>${mongodb.version}</version>
	</dependency>
</dependencies>


MongoDB原生态API使用 + 查询文档并显示指定字段


二、简单案列


全局MongoDb操作对象


	MongoClient mongoClient = new MongoClient("localhost" , 27017);
	
	//或者使用下面的方法,使用连接字符串进行构建Mongo客户端实例
//	 MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017");
//	 MongoClient mongoClient = new MongoClient(connectionString);
	
	/**
	 * 一旦有了连接到MongoDB部署的MongoClient实例,就可以使用MongoClient.getdatabase()方法来访问数据库。
	 * 将数据库的名称指定到getDatabase()方法。如果数据库不存在,MongoDB将在您第一次为该数据库存储数据时创建数据库
	 * 数据库实例不可变
	 */
	MongoDatabase database = mongoClient.getDatabase("mydb");
	
	/**
	 * 
	 * 一旦有了DB实例后,就使用它的getCollection()方法来访问一个集合。
	 * 将集合的名称指定到getCollection()方法。如果一个集合不存在,MongoDB将在您第一次为该集合存储数据时创建集合。
	 */
	
	/**
	 * 例如,使用数据库实例,下面的语句访问mydb数据库中的名为test的集合
	 * 集合不可变
	 */	
	MongoCollection<Document> collection = database.getCollection("test");
	
	



/**
 * 有条件取出(查询)第一个文档对象(第一条数据)
 */
@Test
public void findOne(){
	//选择性的显示字段  0:不显示 ,1:显示
	BasicDBObject exclude = new BasicDBObject();
	exclude.append("_id", 0);
	Document doc = collection.find().projection(exclude).first();
	System.err.println("只取【test】集合中的第一个文档对象:"+doc.toJson());
}


MongoDB原生态API使用 + 查询文档并显示指定字段


利用cmd查询结果显示如下


db.test.find().pretty()


MongoDB原生态API使用 + 查询文档并显示指定字段


如果我们不想显示这个"_id"字段,我们可以这样做


db.test.find({},{'_id':0}).pretty()


MongoDB原生态API使用 + 查询文档并显示指定字段


利用api达到这种效果,就是使用find()方法后面再跟上这个方法


MongoDB原生态API使用 + 查询文档并显示指定字段



我们点进去看看这个方法的说明是什么


MongoDB原生态API使用 + 查询文档并显示指定字段



翻译成中文意思就是


设置描述字段的文档,以返回所有匹配的文档


意思就是,字段约束


我们回过头来再来看看什么是BasicDBObject


MongoDB原生态API使用 + 查询文档并显示指定字段



向这个对象添加键值对


比如添加一个"_id",0的键值对


MongoDB原生态API使用 + 查询文档并显示指定字段


然后把这个对象放进字段约束的方法中,比如这样


MongoDB原生态API使用 + 查询文档并显示指定字段


连着解读就是:查找这个collection集合中的所有文档,加个约束就是,不显示文档的"_id"字段,再加个条件就是只取出第一条


我们打下断点,看一下这个映射成MongoDB查询语句是什么


MongoDB原生态API使用 + 查询文档并显示指定字段


熟悉不,是不是对应我们的


MongoDB原生态API使用 + 查询文档并显示指定字段



我们还可以这样写,给对象添加更多的键值对


/**
 * 有条件取出(查询)第一个文档对象(第一条数据)
 */
@Test
public void findOne(){
	//选择性的显示字段  0:不显示 ,1:显示
	BasicDBObject exclude =	new BasicDBObject().append("_id", 0).append("name", 0).append("count", 0);	
	Document doc = collection.find().projection(exclude).first();
	System.err.println("只取【test】集合中的第一个文档对象:"+doc.toJson());
}

查询效果如下


MongoDB原生态API使用 + 查询文档并显示指定字段



注意,给对象添加字段的约束键值对的时候,一定不要混合的使用,比如


MongoDB原生态API使用 + 查询文档并显示指定字段


这样的话,将会抛出异常


MongoDB原生态API使用 + 查询文档并显示指定字段


记住,不带这样调戏MongoDB的find查询的,你不显示a字段,其实就是显示b字段,你不要来个'a':0,'b':1,这样简直就是多此一举