当前位置: 首页 > 面试题库 >

使用Java查询有关MongoDB中数组元素的文档

章昆琦
2023-03-14
问题内容

我是MongoDB的新手。我的样本html" target="_blank">文件是

{
    "Notification" : [
        {
            "date_from" : ISODate("2013-07-08T18:30:00Z"),
            "date_too" : ISODate("2013-07-30T18:30:00Z"),
            "description" : "fdfd",
            "url" : "www.adf.com"
        },
        {
            "date_from" : ISODate("2013-07-01T18:30:00Z"),
            "date_too" : ISODate("2013-07-30T18:30:00Z"),
            "description" : "ddddddddddd",
            "url" : "www.pqr.com"
        }
    ],

我正在尝试更新其通知"url" : "www.adf.com"。我执行此操作的Java代码是:

BasicDBObject query=new BasicDBObject("url","www.adf.com");

DBCursor f = con.coll.find(query);

它不会搜索其文件"url""www.adf.com"


问题答案:

在这种情况下,您有一个嵌套的文档。您的文档具有一个字段Notification,该字段是一个数组,其中存储有多个子对象url。要在子字段中进行搜索,您需要使用点语法:

BasicDBObject query=new BasicDBObject("Notification.url","www.adf.com");

但是,这将返回整个文档和整个Notification数组。您可能只需要子文档。要对此进行过滤,您需要使用Collection.find的两个参数的版本。

BasicDBObject query=new BasicDBObject("Notification.url","www.example.com");
BasicDBObject fields=new BasicDBObject("Notification.$", 1);

DBCursor f = con.coll.find(query, fields);

.$装置“这是由find-
操作者匹配这个阵列的仅第一条目”

这仍应返回一个带有子数组的文档Notifications,但是此数组应仅包含where项url == "www.example.com"

要使用Java遍历此文档,请执行以下操作:

BasicDBList notifications = (BasicDBList) f.next().get("Notification"); 
BasicDBObject notification = (BasicDBObject) notifications.get(0);
String url = notification.get("url");

顺便说一句: 当数据库增长时,除非您创建索引以加速此查询,否则您可能会遇到性能问题:

con.coll.ensureIndex(new BasicDBObject("Notification.url", 1));


 类似资料:
  • 本文向大家介绍用MongoDB查询数组元素?,包括了用MongoDB查询数组元素?的使用技巧和注意事项,需要的朋友参考一下 查询数组元素时,MongoDB更好。让我们使用以下语法查询数组元素- 上面的语法将返回所有在数组字段中具有“ yourValue”值的文档。 为了理解这个概念,让我们用文档创建一个集合。使用文档创建集合的查询如下- 在method的帮助下显示集合中的所有文档。查询如下- 以下

  • 本文向大家介绍用MongoDB子元素查询?,包括了用MongoDB子元素查询?的使用技巧和注意事项,需要的朋友参考一下 您可以为此使用位置运算符$。首先让我们创建一个包含文档的集合- 以下是在方法的帮助下显示集合中所有文档的查询- 这将产生以下输出- 这是在MongoDB中查询子元素的方法- 这将产生以下输出-

  • 我有一个如下所示的数据库表: 我想使用PostgreSQL的JSON查询功能来选择JSON\u数组中的某些子字典,例如字典中的a:1。 输出应为 以下查询适用于每个数组中的第一个元素,但我想检查所有元素:

  • 最近升级到使用PostgreSQL 9.3.1来利用JSON功能。在我的表中,我有一个json类型列,其结构如下: 就问题而言,这只是虚拟数据。 是否可以根据id查询电子邮件数组中的特定项目 差不多:“返回id=123的电子邮件)”?

  • 我试图用C#在MongoDB中用嵌套数组文档实现文本搜索功能。我有一个以下格式的MongoDB集合。

  • 问题内容: 我有一个像这样的数据结构 我需要查询“电话号码”中的所有元素,并且必须检查这些电话号码是否已存在于另一个集合中。我的数据结构的下一条路径是 是否可以在Firestore中进行任何索引编制? 问题答案: 如官方文档中所示: 尽管Cloud Firestore可以存储阵列,但可以 查询阵列成员或更新单个阵列元素。 如果只想获取整个数组,则需要像这样迭代: 但是请注意,即使对象作为数组存储在