当前位置: 首页 > 知识库问答 >
问题:

mongodb没有表数据,为什么metadata返回null?

周洋
2023-05-17

我使用下面代码执行分页查询,发现metadata[],不应该是返回metadata:[total: 0]吗,有谁知道不?

FacetOperation facet = Aggregation.facet(
                        count().as("total"),
                        Aggregation.addFields()
                                .addFieldWithValue("pageNum", pageNum+1)
                                .addFieldWithValue("pageSize", pageSize)
                                .build()

                ).as("metadata")
                .and(skip(pageSize * (pageNum - 1)),
                        limit(pageSize)).as("rows");

共有1个答案

冯风史
2023-05-17

问了chatgpt,下面是它的回答:

根据您提供的代码片段,聚合管道是使用MongoDB的聚合框架进行构建的。
在这个聚合管道中,可以看到facet操作用于创建一个包含两个输出文档(输出管道)的子级对象。第一个文档名为"metadata",它包含了另外两个管道操作:一个计算"total"并将其存储在键"total"下,并将其指定为名称为"metadata"的新文档中;另一个管道操作使用skip和limit操作符来实现分页查询。如果没有匹配的结果,则聚合管道的输出只是一个空数组[]。

因此,如果表中没有任何数据满足查询条件,那么"metadata"文档将是一个空的数组[],而不是[total:0],因为在没有任何数据时也会执行管道的所有聚合阶段,而不仅仅是count()聚合操作。

 类似资料:
  • 我正在创建一个进行线性探测以查找键索引的哈希图。如果键已经在索引中,我想增加它的值,而不是向新索引添加一个。 例如,如果我得到字符串“五,五,五”的字数,我的输出是五1,五1,五1,而不是五3。 我认为一定是我的 containsKey 方法,它使用 get 方法来检查我的密钥是否已在映射中。下面是我的Hashmap.java类。

  • 问题内容: 在Python IDLE 3.5.0 Shell中工作。根据我对内置“过滤器”功能的了解,它会根据您传递给它的内容返回列表,元组或字符串。因此,为什么下面的第一个分配有效,而第二个却不起作用(“ 只是交互式Python提示) 问题答案: 看看python文档(从此处开始): 从这些 iterable 元素构造一个迭代器,为其 功能 返回true。 因此,为了获取列表,您必须使用列表类:

  • 问题内容: 我编写了一个打印表格的程序。我没有在主函数中包含返回语法,但是无论何时我键入echo $?它显示12。 我的源代码: 我尚未编写return 12,但每次执行程序时它仍返回12。 谢谢。 问题答案: 正如swegi所说,这是未定义的行为。 正如史蒂夫·杰索普(Steve Jessop)等人所说,在C89之前,它是一个未指定的值,并在C99中指定(观察到的行为与C99不符)。 在大多数环

  • 请求的接口信息: 没有返回东西: 控制台报错: 前端代码: import axios from 'axios' import { baseURL, taskURL } from './resource' // 3.ES6 Promise 封装方式 export function request(options) { } 求大家帮个忙看看到底是哪里问题,要怎么修改,谢谢

  • 问题内容: 这是简单的代码,我没有得到设置位图的结果,而是得到了null。谁能告诉我我在哪里犯错了? 更新 好的,所以我无法像我想的那样将文本转换为图像。这样呢 这会创建位图吗? 问题答案: 从文档中: 返回 解码的位图;如果无法解码图像,则 返回 null。 字符串“ test”中涉及的字节不是有效的位图,对吗? 如果将文本“ test”保存在名为or 等的文件中,并试图在Windows中打开它

  • 问题内容: 我已经存储了在该数据库中插入并插入记录的过程。我想获取最后插入的记录的ID。返回NULL并返回正确的ID,为什么会发生?如我所读,因此最好在表上有一些触发器的情况下使用。我可以使用吗?不论触发器如何,它是否都在表的范围内返回ID? 那么问题是什么以及使用什么呢? 已编辑 问题答案: 就像奥德(Oded)所说的那样,问题在于您在执行之前要先询问身份。 作为解决方案,最好尽可能地接近运行。