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

MongoDB $ aggregate $ push Java Spring Data中的多个字段

隗俊誉
2023-03-14
问题内容

我有一个mongo聚合组查询:

db.wizard.aggregate(
{
$group: {
    _id: "$title",
    versions: { $push: {version:"$version", author:"$author", dateAdded:"$dateAdded"}}
    }
})

我在Java Spring-Data-MongoDB中需要此查询,我当前的解决方案如下所示:

    Aggregation agg = Aggregation.newAggregation(
            Aggregation.group("title").
                    push("version").as("versions")
    );

问题是我不知道如何添加更多字段来推送方法(版本,作者,dateAdded)。Spring-Data-MongoDB是否可能?


问题答案:

您可以将BasicDbObject直接传递到任何聚合管道阶段。

Aggregation agg = newAggregation(
            group("title").
            push(new BasicDBObject
                   ("version", "$version").append
                   ("author", "$author").append
                   ("dateAdded", "$dateAdded")).as("versions"));


 类似资料:
  • 例如,我可以运行这个mongo查询: 我们如何用代码和spring MongoTemplate来实现这一点呢?例如,下面是UPDATE一个值的代码: Update#set方法似乎只接受一个(key、value),而不接受多值或值列表。

  • 我正在通过猫鼬使用MongoDB。 > MongoDB是执行集合扫描还是索引有助于提高查询效率?查询是否与仅使用id字段有任何不同? 如果MongoDB在您查询非索引字段时进行集合扫描。如果集合扫描完全相同,查询多个非索引字段是否会加快查询速度?假设我查询五个非索引字段而不是两个(都返回相同的文档)。两个查询是否都进行相同的集合扫描?

  • 我会尽量保持简单。我有用户对象,在我的用户对象中有一个字段,它是一个数组,只包含用户登录日期。我想统计一下在某个特定日期登录的所有现有日期的用户数。 示例用户: 我想要一个输出,它告诉我: 这可能吗?我该怎么做?

  • 问题内容: 我正在尝试从模型中汇总整数列表。整数派生的字段是装饰器字段。装饰器按预期工作,并且在内,如果直接传递,则显示不会出现问题。但是,如果尝试将字段传递给引发错误的上下文,则该错误基本上会说出一个错误,然后显示一系列不包含任何装饰器字段的模型字段。 我的问题是-如何汇总模型中的(求和)派生字段? **我已经大大简化了和。 问题答案: 您无法使用属性进行汇总,因为该属性在数据库中不存在。但是,

  • 我需要从用户的所有帖子中获得喜欢字段的总数 这里是模式 用户模式 发布架构 我是新来的猫鼬,提前感谢...

  • 问题内容: 在我的收藏夹中,每个文档都有2个修改和同步的日期。我想查找已修改>同步,或不存在同步的内容。 我试过了 但没有显示我的期望。有任何想法吗? 谢谢 问题答案: 您不能将一个字段与具有正常查询匹配的另一个字段的值进行比较。但是,您可以使用聚合框架执行此操作: 我在其中输入“您的其他常规查询”,因为您可以使该位使用索引。因此,如果您只想对该字段所在的文档执行此操作,则可以执行以下操作: 用输