MongoDB原来也就这么回事!

数据库 其他数据库
在这篇文章中,我们讨论了如何在MongoDB中检查字段是否存在。我们使用可以使用一个基本的查询来检查一个字段是否存在。也采用了com.mongodb.client.model.Filters和Document查询方法来检查字段的存在。

大家好,我是指北君。

在本文中,我们来聊聊如何在 MongoDB 中检查一个字段是否存在。

首先,我们需要创建一个简单的Mongo数据库, 然后放入一些假数据,以便在例子中使用。之后,我们将实战一下如何在 Mongo 客户端中进行查询以及在 Java 代码中检查字段是否存在。

示例配置

首先,让我们把Mongo shell上下文切换到一个存在的数据库。

use javanorth

我们将在users集合中插入一个用户。

db.users.insert({name: "java", surname: "north" })

现在我们已经做好了准备工作,接下去就讲讲如何检查字段是否存在。

在Mongo Shell中检查字段是否存在

我们能够通过基本的查询来检查特定字段的存在与否,例如在Mongo Shell或其他数据库控制台。Mongo提供了一个特殊的查询操作符,$exists方便我们查询验证。

db.users.find({ 'name' : { '$exists' : true }})

我们先使用一个标准的find​ 方法,在这个方法中,我们指定我们要查询的字段,并使用$exists​查询操作符。如果name​字段在users集合中存在,所有包含该字段的记录都将会被返回。

[
{
"_id": {"$oid": "6115ad91c4999031f8e6f582"},
"name": "java",
"surname": "north"
}
]

如果该字段不存在,我们将得到一个空的结果。

在Java中检查字段的存在性

我们先添加Mongo driver 这个Maven的依赖包

<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.10</version>
</dependency>

然后通过代码构建一个连接到数据库

MongoClient mongoClient = new MongoClient();
MongoDatabase db = mongoClient.getDatabase("javanorth");
MongoCollection<Document> collection = db.getCollection("users");

使用过滤器

com.mongodb.client.model.Filters​是Mongo依赖的一个工具类,包含了很多有用的方法。我们就只需要使用exists()方法。

Document nameDoc = collection.find(Filters.exists("name")).first();
assertNotNull(nameDoc);
assertFalse(nameDoc.isEmpty());

首先,我们尝试从users​集合中寻找元素,并得到第一个找到的元素。如果指定的字段存在,我们得到一个nameDoc文档作为响应。

现在,让我们来看看当我们试图找到一个不存在的字段时会发生什么。

Document nameDoc = collection.find(Filters.exists("non_existing")).first();
assertNull(nameDoc);

如果没有找到元素,我们会得到一个 null 的Document作为响应。

使用 Document 查询

com.mongodb.client.model.Filters​类并不是检查字段存在的唯一方法。我们也可以使用com.mongodb.BasicDBObject:的来查询验证。

Document query = new Document("name", new BasicDBObject("$exists", true));
Document doc = collection.find(query).first();
assertNotNull(doc);
assertFalse(doc.isEmpty());

结果与前面的例子相同。如果元素被找到了,我们会收到一个非null的Document。

当我们试图找一个不存在的字段时,代码的结果也是一样的。

Document query = new Document("non_existing", new BasicDBObject("$exists", true));
Document doc = collection.find(query).first();
assertNull(doc);

如果没有找到任何元素,我们会得到一个null 的 Document 作为响应。

总结

在这篇文章中,我们讨论了如何在MongoDB中检查字段是否存在。我们使用可以使用一个基本的查询来检查一个字段是否存在。也采用了com.mongodb.client.model.Filters和Document查询方法来检查字段的存在。

责任编辑:武晓燕 来源: Java技术指北
相关推荐

2020-03-04 08:47:10

Kafka架构原理

2020-06-30 08:12:32

VMwareKVMDocker

2018-06-04 08:40:20

磁盘分区MBR

2022-08-15 08:01:00

三色标记JVM算法

2020-06-17 14:13:29

索引数据库场景

2021-07-29 16:56:59

微信腾讯注册

2020-11-27 09:20:56

零拷贝底层技术

2021-11-19 11:16:29

Git命令Linux

2021-04-19 05:42:51

Mmap文件系统

2014-04-02 10:20:20

锐捷网络云课堂

2010-04-22 14:38:24

培训

2023-11-01 14:49:07

2015-05-07 10:10:06

云应用开发开发者云平台

2015-12-15 16:54:00

戴尔云计算

2016-05-09 10:27:36

MySQLHive数据迁移

2012-01-11 09:15:45

Objective-C

2023-05-07 23:22:24

golang

2022-12-06 17:30:04

2012-11-14 16:57:37

手机刷机

2021-03-03 09:39:26

勒索软件漏洞网络攻击
点赞
收藏

51CTO技术栈公众号