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

一、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操作对象


	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());
}



利用cmd查询结果显示如下


db.test.find().pretty()




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


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




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





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





翻译成中文意思就是


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


意思就是,字段约束


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





向这个对象添加键值对


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




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




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


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




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





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


/**
 * 有条件取出(查询)第一个文档对象(第一条数据)
 */
@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的find查询的,你不显示a字段,其实就是显示b字段,你不要来个'a':0,'b':1,这样简直就是多此一举



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值