【问题标题】:Get field of json from array of jsons从 jsons 数组中获取 json 字段
【发布时间】:2017-01-14 15:12:37
【问题描述】:

我有以下 json 文件。我只想检索所有名称。给定一个电影名称,我需要返回所有用户名。

我正在使用 Java,如果您也可以在 Java 方面帮助我,那就太棒了。我该怎么做?

【问题讨论】:

  • 您是否尝试过任何可以帮助我们了解您的问题的方法?
  • 在 StackOverlow 上真的不鼓励使用图像作为代码,请使用实际代码而不是图像来更新您的问题。
  • How to parse JSON in Java的可能重复

标签: java json mongodb mongodb-query


【解决方案1】:

如果您使用的是 Mongo 3.x 驱动程序,您可以使用类似的东西。

 MongoClient mongoClient = new MongoClient();
 MongoDatabase db = mongoClient.getDatabase("test");
 MongoCollection<Document> movieToUsers = db.getCollection("movieToUsers");
 Bson filter = Filters.eq("movieName", "Green Mile");
 List<String> names = movieToUsers.distinct("user.name", filter, String.class).into(new ArrayList<>());

【讨论】:

    【解决方案2】:

    org.json图书馆

    样本

    //Json object 
    JSONObject obj = new JSONObject(" .... ");
    String id = obj.getString("_id");
    String movieName = obj.getString("movieName");
    //Json array
    JSONArray users = obj.getJSONArray("user");
    for (int i = 0; i < arr.length(); i++)
    {
      String name = user.getJSONObject(i).getString("name");
      String name = user.getJSONObject(i).getString("date");
    }
    

    【讨论】:

      【解决方案3】:

      您可以将 distinct() 函数与查询一起使用,如下所示:

      mongo shell:

      var results = db.movieToUsers.distinct("user.name", { "movieName": "Green Mile" });
      printjson(results);
      

      在Java中,这是通过distinct()方法实现的,例如

      // Get a new connection to the db assuming that it is running 
      MongoClient m1 = new MongoClient();
      
      // use test as a database or use your own database
      DB db = m1.getDB("test");
      
      // fetch the collection object 
      DBCollection coll = db.getCollection("movieToUsers");
      
      // call distinct method with the query and store results in variable results
      List results = coll.distinct("speed", new BasicDBObject("movieName", "Green Mile"));
      
      // iterate through the results list and print the names
      for(int i=0;i<results.size();i++){
          System.out.println(results.get(i));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 2016-09-24
        • 1970-01-01
        • 2020-04-05
        • 2022-10-17
        • 2018-09-20
        相关资源
        最近更新 更多