Spring - mongodb - 聚合 - 需要“光标”选项

2023-11-22

执行以下聚合管道:

public void getMostLikedItems () {
        UnwindOperation unwind = Aggregation.unwind("favoriteItems");
        GroupOperation group = Aggregation.group("favoriteItems").count().as("likes");
        SortOperation sort = Aggregation.sort(Sort.Direction.DESC, "likes");

        Aggregation aggregation = newAggregation(unwind, group, sort);
        DBObject result = mongoTemplate.aggregate(aggregation, "users", LikedItem.class).getRawResults();
}

抛出以下异常:

com.mongodb.MongoCommandException: Command failed with error 9: 'The 'cursor' option is required, except for aggregate with the explain argument' on server localhost:27017. The full response is { "ok" : 0.0, "errmsg" : "The 'cursor' option is required, except for aggregate with the explain argument", "code" : 9, "codeName" : "FailedToParse" }

我不明白这里的光标选项是什么意思。该选项应该在哪里配置?

EDIT这是一个示例用户文档

{
  "_id": "5a6df13552f42a34dcca9aa6",
  "username": "user1",
  "password": "$2a$10$p0OXq5PPa41j1e4iPcGZHuWjoKJ983sieS/ovFI.cVX5Whwj21WYi",
  "favoriteItems": [
    {
      "_id": "5a0c6b2dfd3eb67969316d6d",
      "name": "item1",
      "city": "Rabat"
    },
    {
      "_id": "5a0c680afd3eb67969316d0b",
      "name": "item2",
      "city": "Rabat"
    }
  ]
}

来自文档。

MongoDB 3.4 不推荐使用没有游标的聚合命令 选项,除非管道包含解释选项。什么时候 使用聚合命令内联返回聚合结果, 使用默认批量大小游标指定游标选项:{} 或 在游标选项中指定批处理大小cursor: {batchSize: }。

你可以通过batchSize with AggregationOptions在 Spring Mongo 2.x 版本中

Aggregation aggregation = newAggregation(unwind, group).withOptions(newAggregationOptions().cursorBatchSize(100).build());

使用默认批量大小

Aggregation aggregation = newAggregation(unwind, group).withOptions(newAggregationOptions().cursor(new Document()).build());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring - mongodb - 聚合 - 需要“光标”选项 的相关文章

随机推荐

  • 如何在 Grails 中复制域对象?

    我想复制一个域对象 实现这一目标的最简单方法是什么 我意识到我可以创建一条新记录 然后迭代每个字段 逐个字段复制数据 但我认为必须有一种更简单的方法来做到这一点 在 Rails 中 有一个简单的方法可以做到这一点 rails lt 3 1
  • 在 MVC 中,部分视图会继承其父视图的模型吗?

    我正在将一些数据从我的控制器传递到视图 我希望将其显示在该视图内的部分视图中 不要问 这很复杂 我知道我可能甚至不应该将模型传递给另一个视图的视图 但我注意到部分视图实际上是从父视图继承模型 public ActionResult Inde
  • 从手机浏览器获取位置数据

    我正在开发一个网络应用程序 该应用程序会经常受到移动浏览器的攻击 我想知道是否有办法从浏览器请求中获取足够的信息来查找位置数据 三角测量或 GPS 当然 不是直接来自请求 一位同事建议 一些运营商在请求标头中提供唯一标识符 该标识符可以发送
  • 使用 ggplot2 重现以下基本图

    I d like to reproduce the following base graph with ggplot2 以下是R生成该图的代码 set seed 12345 Data lt matrix data rnorm n 30 me
  • 类型错误:Ajv 不是构造函数

    我有这个课程 我尝试实例化Ajv使用 new 关键字 我收到此错误 类型错误 Ajv 不是构造函数 Code import as Ajv from ajv export class ValidateJsonService validateJ
  • 解决 Looper.java 中的非空和非空符号的问题

    我正在开发一个 Android 应用程序 请帮助我解决依赖错误 package android os import android support annotation NonNull import android support anno
  • 限制CPU负载或设置进程优先级

    这不是我第一次从我的主机收到 CPU 负载过高的警告 该代码只是一些带有 mysql 查询的随机 php 脚本 没什么花哨的 这些表格没什么特别的 最多几百行 如果需要的话我总是限制它们 我不介意它运行 0 15 秒而不是 0 05 秒 那
  • WPF中如何直接在位图(BitmapSource、WriteableBitmap)上绘图?

    在 GDI Winforms 中我会这样做 Bitmap b new Bitmap 32 32 Graphics g Graphics FromImage b some graphics code 如何使用 DrawingContext 在
  • 如果构造函数参数与 C++ 中的成员变量同名怎么办?

    首先是一些代码 class CInner public CInner const CInner another impl here private some member variables class COuter public COut
  • 大写 Unicode 的正则表达式与“Ó”不匹配?

    它似乎不将重音 识别为大写 usr bin env perl use strict use warnings use 5 14 0 use utf8 use feature unicode strings SIM N s p Upper u
  • VS2010命令提示符给出错误:无法确定 VS Common Tools 文件夹的位置

    我已经安装了VS2010 安装创建了 VS2010 命令提示符的快捷方式 但是当我打开命令提示符时出现错误 无法确定 VS Common Tools 文件夹的位置 我检查了环境变量 VS100COMNTOOLS 它有值 C Program
  • 我应该提交由 Eclipse 更改的文件吗?

    我以Eclipse项目的形式继承了一个Java项目 更改 Tomcat 配置 从 v6 到 v7 后 Subclipse 提示我提交以下文件 classpath org eclipse core prefs org eclipse comm
  • 为什么 Silverlight TextBox 使用 \r 作为换行符而不是 Environment.Newline (\r\n)?

    在 silverlight 中 如果 TextBox AcceptsReturn 则所有换行符均为 r 即使 Environment Newline 为 r n 为什么是这样 WPF 将 r n 作为文本框的换行符 我同意尔坦的回答 我遇到
  • 解码 Base64 图像

    我在 HTML 中嵌入了 Base64 图像 如何使用 C 或 VB net 对其进行解码 google com gt base64 图像解码 C gt http www eggheadcafe com community aspnet 2
  • 启用位置/GPS 设置而不使用 Play 服务 API

    大多数人可能已经知道 Google Play 服务中有一个新的位置设置对话框 API 对于那些不知道的人 这里是使用 Dialog API 的地图应用程序的屏幕截图 谷歌只在他们的播放服务中添加该 API 这有点不公平 另一方面 我认为如果
  • 仅静态链接某些库

    在与 GCC 链接时 如何将某些特定库静态链接到我的二进制文件 gcc static 尝试静态链接all链接库 但我还没有其中一些的静态版本 例如 libX11 gcc lsome dynamic lib code c some stati
  • CrossGeolocator 的 GetPositionAsync 不起作用

    我在用交叉地理定位器检索设备的当前纬度和经度 不过我在里面使用它出现时覆盖方法 但它不起作用 这异步获取位置方法挂起应用程序 protected override void OnAppearing base OnAppearing var
  • jQuery:如何更改标签名称?

    jQuery 如何更改标签名称 例如 tr 1 tr I need div 1 div 我可以 创建 DOM 元素 将tr内容复制到div 从 dom 中删除 tr 但我可以直接做吗 PS tr get 0 tagName div 结果是D
  • Liquibase Hibernate 插件不起作用

    如此处所述 https github com liquibase liquibase hibernate issues 74 我在使 liquibase hibernate 扩展正常工作时遇到问题 我想我已经设置好了一切 但似乎我一直遇到奇
  • Spring - mongodb - 聚合 - 需要“光标”选项

    执行以下聚合管道 public void getMostLikedItems UnwindOperation unwind Aggregation unwind favoriteItems GroupOperation group Aggr