0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-10-07 16:47 次阅读

在本文中,我们来聊聊如何在 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());

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

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

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.FiltersDocument查询方法来检查字段的存在。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2964

    浏览量

    104684
  • 数据库
    +关注

    关注

    7

    文章

    3792

    浏览量

    64340
  • 代码
    +关注

    关注

    30

    文章

    4774

    浏览量

    68503
  • Shell
    +关注

    关注

    1

    文章

    365

    浏览量

    23349
  • mongodb
    +关注

    关注

    0

    文章

    22

    浏览量

    364
收藏 人收藏

    评论

    相关推荐

    求助:数组怎么样存入数据库的一个字段呢?

    看到程序,它将visa采集到的数据通过波形显示,同时数据创建为数组,存入到数据库的一个字段?在数据库里看到,比如波形的字段下,内容是长二进制数据,,求大神指导,这是怎么做的呢?万分
    发表于 11-10 11:35

    怎样把二维数组存到ACCESS数据库的一个字段呢?

    怎样把二维数组存到数据库的一个字段,并方便从这个字段取出来?有没有做过的,麻烦出来指点下啊 小弟先谢谢了
    发表于 08-01 20:33

    写入一个字节到24c02并读出来验证

    写入一个字节到24c02并读出来验证 本课的程序已经包含了上颗的内容,增加了读
    发表于 08-09 22:01 3157次阅读
    写入<b class='flag-5'>一个字</b>节到24c02并读出来验证

    一个字节到24c02(源程序)

    一个字节到24c02(源程序) 24c02是非挥发eeprom存储器器件,采用的IIC总线技术。24c02在许多试验中都有出现。
    发表于 08-11 19:17 2922次阅读

    UART 发送数据丢失最后一个字

    STM32 UART 发送数据丢失最后一个字
    发表于 12-04 15:10 0次下载

    C语言教程之输出一个字符的前驱字符

    C语言教程之输出一个字符的前驱字符,很好的C语言资料,快来学习吧。
    发表于 04-22 17:45 0次下载

    1602与51写一个字母_源代码

    1602与51写一个字母_源代码,感兴趣的可以看看。
    发表于 07-19 16:55 2次下载

    关于UART发送数据丢失最后一个字节问题的详细解析-pdf

    STM32 UART_发送数据丢失最后一个字
    发表于 04-10 11:23 3次下载

    如何编写C语言程序判断一个字是否是字母或数字

    怎样判断一个字是否一个字母? 字母表的所有字母(包括计算机键盘上的所有键)都被赋予了
    发表于 01-23 14:50 10次下载
    如何编写C语言程序判断<b class='flag-5'>一个字</b>符<b class='flag-5'>是否</b>是字母或数字

    MongoDB引入字段级数据库加密安全功能

    MongoDB 引入了全新的安全功能:字段级数据库加密。在有了静态存储加密和传输加密之后,为什么还要字段加密?
    的头像 发表于 04-02 17:56 2847次阅读
    <b class='flag-5'>MongoDB</b>引入<b class='flag-5'>字段</b>级数据库加密安全功能

    如何使用Python3检查文件是否存在

    检查文件是否存在的方法, 在Python3 文件操作中经常被用到, 因为,只有文件存在, 我们才可以对文件进行下步处理, 那么,常用的
    发表于 10-26 17:08 14次下载
    如何使用Python3<b class='flag-5'>检查</b>文件<b class='flag-5'>是否</b><b class='flag-5'>存在</b>

    浅谈STM32串口通信()基本介绍和一个字节传输的实现

    文章目录0 传输引脚1 传输一个字节1.1 发送一个字节1.2 接收一个字节2 代码2.1 配置2.2 发送一个字节2.3 接收一个字节0
    发表于 12-24 18:51 14次下载
    浅谈STM32串口通信(<b class='flag-5'>一</b>)基本介绍和<b class='flag-5'>一个字</b>节传输的实现

    如何利用Java判断一个字符串是否包含某个字

    如何利用Java通过不同的方法来判断一个字符串是否包含某个字符。 **2 ****方法** 1. .contains方法
    的头像 发表于 02-17 15:13 1484次阅读
    如何利用Java判断<b class='flag-5'>一个字</b>符串<b class='flag-5'>是否</b>包含某<b class='flag-5'>个字</b>符

    Python检查字符串包含的方法

    Python 有多种处理字符串的方法。今天我们介绍如何检查一个字符串是否包含另一个字符串。
    的头像 发表于 05-14 16:02 1.6w次阅读

    UART发送数据丢失最后一个字

    电子发烧友网站提供《UART发送数据丢失最后一个字节.pdf》资料免费下载
    发表于 08-01 17:57 1次下载
    UART发送数据丢失最后<b class='flag-5'>一个字</b>节