繁体   English   中英

如何使用 MongoDB Java 在 Object 数组中获取字符串?

[英]How to get a String inside an Object Array using MongoDB Java?

我正在尝试学习 MongoDB 并且我想在 Object 数组中获取一个字符串,我的 MongoDB 文档在这里:

{
   "_id" : ObjectId("5f1507fed91e81246c409a59"),
   "identification" : "punishment",
   "lastID" : 2,
   "punishmentsTypes" : [ 
       {
           "category" : "OFENSA_JOGADOR",
           "reason" : "Ofensa a Jogador",
           "group" : [ 
               "HELPER", 
               "MODERATOR", 
               "ADMINISTRATOR", 
               "MANAGER", 
               "MASTER"
           ],
           "description" : "Ofender algum jogador",
           "cases" : [ 
               {
                   "1" : {
                       "type" : "MUTE",
                       "duration" : 604800000
                   }
               }, 
               {
                   "2" : {
                       "type" : "BAN",
                       "duration" : 0
                   }
               }
           ]
       }, 
       {
           "category" : "FALSIFICACAO",
           "reason" : "Falsificação de provas",
           "group" : [ 
               "ADMINISTRATOR", 
               "MANAGER", 
               "MASTER"
           ],
           "description" : "Falsicar provas ao denunciar um jogador em nosso fórum",
           "cases" : [ 
               {
                   "1" : {
                       "type" : "BAN",
                       "duration" : 0
                   }
               }
           ]
       }, 
       {
           "category" : "HACK",
           "reason" : "Hack",
           "group" : [ 
               "MODERATOR", 
               "ADMINISTRATOR", 
               "MANAGER", 
               "MASTER"
           ],
           "description" : "Uso de cheats ou programas ilícitos",
           "cases" : [ 
               {
                   "1" : {
                       "type" : "BAN",
                       "duration" : 7776000000.0
                   }
               }, 
               {
                   "2" : {
                       "type" : "BAN",
                       "duration" : 0
                   }
               }
           ]
       }
   ],
   "unpunishmentTypes" : [ 
       {}
   ]
}

我试过这个:

MongoCollection<Document> collection = mongoDatabase.getCollection("settings");

BasicDBObject query = new BasicDBObject();
BasicDBObject field = new BasicDBObject();

query.put("id", "punish");
field.put("punishmentsTypes", 1);
field.put("_id", 0);

Document test = collection.find(query).projection(field).first();

assert test != null;
Object object = test.get("punishmentsTypes");

System.out.println(object);

这就是 output:

[文档{{category=OFENSA_JOGADOR}},文档{{category=FALSIFICACAO}},文档{{category=HACK}}]

我怎样才能只获得类别字符串,output 是: OFENSA_JOGADOR, FALSIFICACAO, HACK?

我不确定您是如何通过查询获得该结果的,但这是我获得结果的方式:


    MongoCollection<Document> collection = mongoDatabase.getCollection("settings");
    Document query = new Document();
    
    query.put("identification", "punishment");
    
    Document test = collection.find(query).first();
    
    List<Document> punishmentsTypes = test.getList("punishmentsTypes", Document.class);
    
    for (Document document : punishmentsTypes) {
        String category = document.getString("category");
        System.out.println(category);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM