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

2022-02-25 00:00:00 字段 指定 原生态

一、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,这样简直就是多此一举

    原文作者:appleyk
    原文地址: https://blog.csdn.net/Appleyk/article/details/80005458
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章