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

从子文档返回字段数组

严兴旺
2023-03-14

任何人都可以帮助我查询mongo以释放数组,我使用的是mongdb本机驱动程序我的收集文档如下,也请忽略我的objectId它只是示例

{  
      "_id":ObjectId(123),
      "name":"Sam",
      "age":20,
      "hobbiesDetail":[  
         {  
            "description":"FootBall",
            "level":"20%"
         },
         {  
            "description":"Cricket",
            "level":"80%"
         }
      ]
   },
   {  
      "_id":ObjectId(124),
      "name":"Ted",
      "age":26,
      "hobbiesDetail":[  
         {  
            "description":"FootBall",
            "level":"20%"
         }
      ]
   }

而我的预期产出是

[  
   {  
      "name":"Sam",
      "age":20,
      "hobbies":"Football,Cricket"
   },
   {  
      "name":"Ted",
      "age":26,
      "hobbies":"Football"
   }
]

我只想解开我的数组,在一个查询中的爱好描述之间添加一个逗号,谢谢你的帮助

共有1个答案

松翔
2023-03-14

您所需要的只是一个带有数组操作符的$项目。

db.collection.aggregate([
    { "$project": { 
        "name": 1, 
        "age": 1, 
        "hobbies": { 
            "$map": { 
                "input": "$hobbiesDetail", 
                "as": "hobby", 
                "in": "$$hobby.description" 
            } 
        } 
    }}
])
 类似资料:
  • 返回所有字段,但返回NULL。我做错什么了吗? 进一步挖掘,如果我做这样的事情: 以下为打印内容: 查看FacetField源代码:https://github.com/apache/lucene-solr/blob/branch_6_3/lucene/facet/src/java/org/apache/lucene/facet/FacetField.java似乎所有的FacetField都是用“

  • 我正在查看MongoDB在和投影上的留档。我试图弄清楚如何只返回投影数组字段的子集,但我似乎无法弄清楚。 相关帖子: > 我没有试图从mongob聚合框架中执行$片-获取嵌套数组的第一个文档字段。 我也没有尝试从mongo projection中的仅返回数组值展平子文档,因为我仍然需要顶部文档中的一些字段。 假设我在集合中有以下文档: 我想要执行的查询是: 我希望它只返回数组中为的子文档下的。例如

  • 我有已导入收藏的. json-file。 我想做一些地图缩减,以显示所有用户的评论总数及其平均值。 我试过: 我不知道为什么它会显示\u id“:null。我想这个.ratings.userId是错误的。但是这个.ratings[userId]也不起作用。 我预计会出现以下情况: 你能帮忙吗?

  • 我正在尝试从MongoDB中的数组中获取一个元素。我认为聚合过滤器是正确的应用程序。但是我已经尝试了一百万次,我仍然找不到问题所在。你能帮我吗? MongoDB示例数据: 我的解决方案: 我的结果: 预期结果: 我已经检查了Mongo参考:https://docs.mongodb.com/manual/reference/operator/aggregation/filter/#example M

  • 我想从firestore中子文档的地图中获得特定的数据,并将其显示在我的web应用程序页面中。我真的不知道如何在部分调用数据。 注意:stages是一个字段映射 图片来帮助解决我的问题: 设置非映射字段的代码: 注意:已经是子文档中的非map字段,可以使用前面提到的代码轻松地从数据库中取出。

  • 运行查询后,我从MongoDB返回一个JSON值。问题是我不想返回与我的返回相关的所有JSON,我尝试搜索文档,但没有找到正确的方法。我想知道如果可能的话会怎样,如果可能的话,正确的做法是什么。示例:在数据库中 如果某个字段为用户存在,但不返回另一个字段,那么返回该字段的正确方式是什么。对于上面的示例,我想返回RMS的字段和扎克伯格的字段。这就是我试图找到的字段是否为空,但它似乎不起作用。