返回字段长度/大小的投影选项

2023-12-03

我只是想写一个像 SQL 一样的 mongo 查询:

SELECT LENGTH(binaryBody) AS bodyLength FROM documents;

为此,我想我必须使用 find 方法的投影。

db.documents.find(
  {<query>},
  { bodyLength: {$size: 'body'}}
);

但如何做到这一点呢?

错误: 错误: { “waitedMS”:NumberLong(0),“确定”:0,“errmsg”:

"不支持的投影选项:bodyLength: { $size: \"body\" }", “代码”:2}


.find()不会以任何方式“更改”返回的文档。您只能在投影中“包含”或“排除”。

唯一“改变”的是.aggregate() or .mapReduce().

For .aggregate(),需要 MongoDB 3.4$strLenCP or $strLenBytes,但通常你指的是前者:

db.documents.aggregate([
  { "$project": {
    "bodyLength": { "$strLenCP": "$body" }
  }}
])

For .mapReduce()

db.documents.mapReduce(
  function() {
    emit(this._id, this.body.length)
  },
  function() { },
  { "out": { "inline": 1 } }
);

实际上,在后一种情况下,您可能还需要迭代游标,并且可能需要这样做,除非集合足够小或者您实际上可以输出到另一个集合。

The $size您尝试使用的运算符仅适用于“数组”以返回存在的条目数。再说一次,它仅适用于与.aggregate() method.

如果您想省略诸如 a 之类的字符space在一个字符串中然后$split and $reduce with $concat可以应用:

db.documents.aggregate([
  { "$addFields": {
    "bodyLength": {
      "$strLenCP": {
        "$reduce": {
          "input": { "$split": [ "$name", " "] },
          "initialValue": "",
          "in": { "$concat": [ "$$value", "$$this" ] }
        }
      }
    }
  }}
])

或者再次与mapReduce():

db.documents.mapReduce(
  function() {
    emit(this._id, "".concat.apply(this.body.split(" ")).length)
    // Or even
    // emit(this._id, this.body.split(" ").reduce((o,e) => o.concat(e),"").length)
  },
  function() { },
  { "out": { "inline": 1 } }
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回字段长度/大小的投影选项 的相关文章

  • 在节点中使用mongoosejs更新多条记录

    我在使用 mongoosejs 和 Node js 更新多个记录时遇到问题 由于某种原因 即使有多个匹配 我也只更新一条记录 我还注意到回调在 update 之后不会触发 我没有收到任何错误消息 这里发生了什么 Page find stat
  • 猫鼬模式创建

    我刚刚开始使用猫鼬 我有一个使用 mongoose 的创建脚本 它使用示例数据创建模式和数据库 现在我编写实际的应用程序 我是否需要在每次应用程序运行时创建架构对象 或者它是否已经以某种方式可用 换句话说 我是否需要在每个使用 mongoo
  • MongoDB 删除 MapReduce 集合

    由于客户端代码中的错误 mongodb 创建了许多 mr mapreduce 集合 如何将它们全部删除 可能通过掩码 我在交互式 shell 中运行脚本 function f var names db getCollectionNames
  • Mongodb聚合框架:$group是否使用索引?

    我正在尝试使用聚合框架 match and group阶段 做 group阶段使用索引数据 我正在使用最新的可用 mongodb 版本 2 5 4 group不使用索引数据 来自 mongoDBdocs http docs mongodb
  • 正则表达式 Spring 数据 mongodb 存储库

    早上好 我正在尝试使用查询注释将正则表达式与 Spring data mongodb 存储库结合起来 我想要的是在我的 mongo 文档的一个字符串属性中搜索一个子字符串 我一直在谷歌和这里寻找 但我没有找到任何优雅的东西 我想知道 Spr
  • 如何决定使用哪种NoSQL技术? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 MongoDB 基于文档 HBase 基于列 和 Neo4j 对象图 的优缺点是什么 我特别有兴趣了解
  • Mongoose嵌入式文档更新

    我在嵌入式文档更新方面遇到问题 我定义的架构 var Talk new Schema title type String required true content type String required true date type D
  • Laravel Mongo 多对多关系在哪里不起作用

    我有两个以多对多关系相互关联的 mongo 文档 一个称为律师 另一个称为律师 我的律师模型有 public function cases return this gt belongsToMany App LawCase 我的 LawCas
  • 如何使用 pymongo 在 mongodb 中查询日期?

    我试图在 mongodb 中执行查询日期 但结果始终为空 我的查询如下 in the begin code def init self self now datetime now self db conexaoMongo self hora
  • 如何从数组中删除重复的条目?

    在下面的示例中 Algorithms in C 出现两次 The unset修饰符可以删除特定字段 但如何从字段中删除条目 id ObjectId 4f6cd3c47156522f4f45b26f favorites books Algor
  • 如何验证 ObjectID

    使用 Joi 模式验证 是否可以针对 MongoDB ObjectID 进行验证 像这样的事情可能很棒 id Joi ObjectId required error errorParser 我发现如果我这样做 Joi object id J
  • Mongodb 数据库上的 SASL 身份验证失败

    我在尝试使用 PHP Mongodb 驱动程序连接到 Mongodb 时遇到问题 实际上我有一个名为 LRS 的数据库 它有一个名为 juano 的用户 在我的设置文件中带有密码 12345 我确信我编写了正确的配置 但是当我在 Larav
  • MongoDB自增ID

    MongodB 中自动生成的 ID 的大小为12 Bytes大整数的大小是8 bytes 我在 4 台运行 Ubuntu Server 的机器上有一个 mongodb 集群 但我现在只是在测试 插入只能通过一台服务器 即 Nodejs 服务
  • Mongodb - 为现有集合添加架构

    我的 MongoDB 中有一个包含 1300 万条记录的集合 不幸的是 当我创建这个集合时 没有为其创建模式 我想知道除了备份整个数据库 创建架构并上传所有数据之外 是否有任何方法可以添加 JSON 架构 您可以使用以下方法将 JSON 架
  • Pymongo 批量插入

    我正在尝试批量插入文档 但批量插入时不会插入超过 84 个文档 给我这个错误 in insert pymongo errors InvalidOperation cannot do an empty bulk insert 是否可以批量插入
  • Node.js 检测两个猫鼬查找何时完成

    我正在尝试使用自动完成功能初始化两个输入library https www devbridge com sourcery components jquery autocomplete 当我加载页面时 我将触发 Ajax 来初始化两个输入文本
  • spring-data-mongodb 在重新水化对象时到底如何处理构造函数?

    我读过了http static springsource org spring data data mongo docs 1 1 0 RELEASE reference html mapping chapter http static sp
  • 使用 PHP 从 Mongo 解码 JSON

    我已经看过这个线程 PHP 解码嵌套 JSON https stackoverflow com questions 3555335 php decode nested json并没有设法用它来解决我的问题 我目前正在从 Mongo 获取 J
  • MongoDB 过滤嵌套对象中的数组元素

    我有一个文件如下 id ObjectId 56423b2558cb340599108b35 test source member abc member xyz 我想过滤数组元素 xyz 并且我正在尝试以下查询 db coll find te
  • 使用 Mongoose 无法找到按 ObjectId 搜索的文档

    Campaign find client id req param client id error campaigns gt if error response error error message else for campaign i

随机推荐

  • 为什么我在尝试使用 pytube 下载 YouTube 视频时收到 HTTP 错误 410?

    我想用 Python 下载 YouTube 视频 我用Python尝试过opencv 但总是有问题 我正在尝试使用 pytube3 和 Python 3 我尝试了这个程序 我在堆栈溢出 from pytube import YouTube
  • Pygame只检测鼠标事件,不检测KEYDOWN事件

    我编写了以下简单的程序 它应该打印出检测到的所有事件pygame event get import pygame sys from pygame locals import display pygame display set mode 3
  • mysqli 准备好的语句不会转义哪些字符?

    我正在尝试强化我的一些 PHP 代码并使用 mysqli 准备好的语句来更好地验证用户输入并防止注入攻击 我放弃了 mysqli real escape string因为它不会转义 和 然而 当我将查询创建为 mysqli 准备好的语句时
  • 我不确定什么是不正确的

    我正在创建一个小型 Java Jpanel 游戏 其中我应该有一个通过箭头上下移动并通过空间发射的火箭 发射方法应该像这样工作 按下空格键 物体发射并在屏幕上移动 然后当它击中某个 x 时 它就会消失 此外 你只能开火一次 直到另一颗子弹消
  • 为什么同一范围内可以进行多个可变借用?

    我编写了这段代码 多次借用可变变量并且编译时没有任何错误 但是根据Rust 编程语言这不应该编译 fn main let mut s String from hello println s test three mut s println
  • 读取生成线程内的不可变值

    我正在努力让这个例子发挥作用 use std sync mpsc Sender Receiver use std sync mpsc use std thread use std sync Arc struct User reference
  • 多个 GZip 文件的快速串联

    我有 gzip 文件列表 file1 gz file2 gz file3 gz 有没有一种方法可以将这些文件连接或 gzip 到一个 gzip 文件中无需解压 them 在实践中 我们将在网络数据库 CGI 中使用它 网络将在哪里接收 来自
  • 从 VB.Net 中的数据表填充组合框的最快方法

    以下代码中的数据表填充了 7500 条记录 这一切都可以从服务器快速加载 问题在于循环数据行以将它们添加到组合框需要一段时间 是否有任何其他方法来设置组合框的数据源或加快此过程的方法 Dim dtColours As New DataTab
  • 如何使用 XSLT1 按标签折叠一组选定的(相邻)标签?

    我有一组必须包含在新元素中的顺序节点 例子
  • 如何在 Firefox 中启用 ActiveX 控件?

    我有一个使用 ActiveX 控件的应用程序 我想使用 Selenium IDE 自动执行此操作 但是当我启动应用程序时 我最终收到一条错误消息 打开 ActiveX 控件 有什么办法可以在 FireFox 中启用 ActiveX 吗 注意
  • 在图中寻找桥梁 C++ (BOOST)?

    我正在阅读 BOOST 库 注意到他们没有一种算法可以在图中找到桥梁 但他们确实有一个可以找到连接点的算法 无论如何 这可以有效地完成吗 我有个主意 1 使用 BOOST 寻找关节点 2 使用out edges 找到连接每个关节点的所有边
  • Stripe 禁用按比例分配

    我的 Stripe 订阅中有两个计划 第一个计划是每月 10 欧元的计划 直到特定日期为止 例如它于 2021 年 10 月 2 日开始 我希望它于 2021 年 7 月 15 日结束 我希望订阅者每月始终支付 10 欧元 即使是最后一个月
  • 如何在默认打印机上打印测试页?

    如何在默认打印机上打印测试页 使用 C Winform 代码 提前致谢 要生成内置 Windows 测试页 您还可以对 PrintUI dll 使用 p invoke 这是一个简单的类 可以让您执行此操作 public static cla
  • 使用命令行克隆 git 存储库成功,但使用 git GUI 客户端(例如 SourceTree)克隆失败

    我已经设置了一个gitMac OS X 10 7 系统上的用户 在 git 用户 root 中 我创建了一个repositories文件夹并初始化了一个名为的裸 git 存储库test 到目前为止 一切都很好 现在 我从与 Mac 位于同一
  • 如何停止在 Spring 中覆盖 bean

    我注意到 如果您在两个 xml 文件中定义具有相同 id 的 bean 它将在第二个文件中被覆盖 Say in file a xml i have
  • 何时在 Activity 中调用 findViewById

    我遇到以下问题 我有以下几行代码 Spinner domainSpinner Spinner findViewById R id domain domainSpinner setVisibility View VISIBLE 这些在用户单击
  • 如何将图标添加到WPF应用程序桌面快捷方式?

    请注意 我问的是桌面图标 而不是窗口图标 该图标显示在应用程序窗口上 这可以 但是当我运行安装程序来安装应用程序时 桌面快捷方式只有一个默认图标 如何将桌面图标与同一应用程序图标关联 当应用程序运行时 任务栏上的图标是正确的图标 我还将 i
  • PowerShell DSC 复合资源

    我已成功创建 DSC 配置并将其部署到服务器上 下一步 我尝试将服务器中常见的配置块部分分解为可重用的部分 或者用 DSC 的说法是 复合资源 经过大量研究后 我仍然无法使用复合资源 运行 Get DSCResource 时它们没有列出 查
  • Django-south 未检测到数据库更改

    我已经从 svn 更新了我们的项目 并且有了新的迁移文件 当我使用时 work manage py schemamigration mypackage auto 我有这样的消息 Nothing seems to have changed 但
  • 返回字段长度/大小的投影选项

    我只是想写一个像 SQL 一样的 mongo 查询 SELECT LENGTH binaryBody AS bodyLength FROM documents 为此 我想我必须使用 find 方法的投影 db documents find