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操作对象
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,这样简直就是多此一举