首页 > 解决方案 > 从 mongodb 集合中的数组中获取值

问题描述

collection:
{    
    "username" : "gorim99949@x1post.com",
    "channels" : [ 
        {
            "channelName" : "yyyyy",
            "id" : 383,
            "url" : "https://xxxxxxxxx",
        }
    ],
}

@Document(collection = "user_masters")
public class UserMasters {
  @Field("username")
  private String userName;

  @DBRef
  private List<UserChannels> UserChannels userChannels;
   ******getter and setter*********

@Document(collection="channels")
public class UserChannels {
  private String url;
 ************getter/setter****************


Repository class
public UserMasters  findByUserName(String username);

@Test method
Query: userRepository.findByUserName(userName).getUserChannels().getUrl();

如何从 mongodb 集合中的数组中获取 url 的值。我无法读取集合中数组中的值。在此先感谢您的帮助

标签: javamongodbmongodb-queryaws-documentdb

解决方案


您将需要一个自定义查询来执行此操作。运行这个查询: db.collection.aggregate({$match: {username: "gorim99949@x1post.com"}}, {$project: {"userChannels": "$channels.url"}}); 它将返回:[{"_id": ObjectId("5a934e000102030405000000"),"userChannels": ["https://xxxxxxxxx"]}]。您可以通过在投影中将 _id 设置为 0 从返回的文档中删除它。


推荐阅读