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

sping-data-mongob嵌套文档投影

莫河
2023-03-14

我有带有嵌套文档注释的帖子集合。简单的文档模式如下所示:

{
    "_id"     : ObjectId("5867e5e64f768509c59f9392"),
    "userId"  : 1,
    "comments": [
        {
            "id"  : 1,
            "text": "a"
        },
        {
            "id"  : 2,
            "text": "b"
        }
    ]
}

我只想投射所要求的评论。我找到了一个可以接受的解决方案。(也只欢迎使用注释对象返回解决方案)

> db.posts.find({userId: 1, 'comments.id': 1}, {'comments.$': 1});
{ "_id" : ObjectId("5867e5e64f768509c59f9392"), "comments" : [ { "id" : 1, "text" : "a" } ] }

然后我尝试将其应用于带有查询注释的mongoDB存储库接口。

@Query(
    value = ""
        + "{"
        + "  'userId'     : '?1',"
        + "  'comments.id': '?2',"
        + "}",
    fields = "'comments.$'"
)
Note findComment(String userId, String commentId);

但我得到了演员特例。有没有更好的方法来使用spring data mongodb实现这一点?

共有1个答案

钱跃
2023-03-14

您的@Query json格式错误。

@Query( value="{ 'userId' : ?0 , 'comments.id': ?1 }",  fields = "{ 'comments.$' : 1}")
 类似资料:
  • 我有一个关于嵌套列表投影界面用法的问题。我有两个实体(父和子)(它们有单向关联) 父级=> 子=> 我有两个选择特定列投影界面。 这个查询可以工作,但是它选择ChildEntity的所有列,并且只将id、name propeties映射到ChildProjection。(生成的查询选择所有列,但我想只选择id和name列) 我如何只选择id和name列(为嵌套列表投影界面选择特定列)并映射到Chi

  • 问题内容: 我如何在mongodb文档中嵌套文档的地方搜索文档。例如,我有一组私人消息。每条私人消息都有两个嵌套文档- 一个代表发送用户,另一个代表接收使用。两个嵌套文档的格式均为- userID:34343,名称:Joe Bloggs 我希望能够搜索用户发送的所有邮件(例如,搜索发件人用户的嵌套文档)。 我正在使用Java驱动程序。我是否需要创建一个代表嵌套文档的DBObject? 谢谢 问题答

  • 问题内容: 我正在编写资产管理应用程序。它允许用户通过向资产添加html控件(例如文本字段,选择菜单等)来存储任意资产属性。然后,该属性的JSON表示成为存储在beddb中的资产JSON文档的一部分。资产在ouchdb中具有以下结构: 我不确定将属性放入数组是否是允许基于属性值搜索资产的最佳方法。将属性直接附加到资产作为属性会更好吗?我正在用Elasticsearch做实验。如果我尝试按原样存储文

  • 我是elasticsearch的新手,对如何进行过滤器、查询和聚合有一些想法,但不确定如何解决下面的问题。我希望能够从下面显示的文档中只查询公司的最新交付(日期和crate_quantity)。我不确定如何去做。有没有办法使用最大聚合从每个文档中只提取最近的交付?

  • 我想在具有指定 URL 的相应文档中将嵌套的“已爬行”更新为 True。 我对mongodb相当陌生,我似乎无法弄清楚这一点,非常感谢任何帮助。

  • 我创建了一个maven项目,并添加了我需要的所有依赖项。我有一些使用spall-data-jpa的存储库,我添加了一些集成测试。 现在,如果我知道它是基于springmvc的,我需要添加spring data rest的ontop。但是我发现的所有例子,我需要添加spring boot来启动应用程序。我还注意到所有新的spring项目都使用spring boot。这意味着我必须学习并在我的项目中使