阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何在MongoDB中检查字段是否存在

66次阅读
没有评论

共计 2059 个字符,预计需要花费 6 分钟才能阅读完成。

导读 在这篇文章中,我们讨论了如何在 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 的依赖包


    org.mongodb
    mongo-java-driver
    3.12.10

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

MongoClient mongoClient = new MongoClient();
MongoDatabase db = mongoClient.getDatabase("javanorth");
MongoCollection 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 查询方法来检查字段的存在。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计2059字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中