Java 获取子文档mongodb中数组的值

Java 获取子文档mongodb中数组的值,java,mongodb,hadoop,Java,Mongodb,Hadoop,我正在使用Hadoop开发一个应用程序来处理存储在mongoDB中的一些数据。我正在用java编写程序 问题是我有一个子文档,它包含一个数组,我想取数组的一个属性的值。我将举一个例子来更清楚地看到这一点 "entities" : { "hashtags" : [ { "**text**" : "whatever", "i

我正在使用
Hadoop
开发一个应用程序来处理存储在
mongoDB
中的一些数据。我正在用
java
编写程序

问题是我有一个子文档,它包含一个数组,我想取数组的一个属性的值。我将举一个例子来更清楚地看到这一点

 "entities" : {
            "hashtags" : [
                    {
                            "**text**" : "whatever",
                            "indices" : [
                                    59,
                                    69
                            ]
                    },
                    {
                            "**text**" : "whatever",
                            "indices" : [
                                    82,
                                    95
                            ]
                    }
            ],
            "urls" : [ ],
            "user_mentions" : [ ]
    },
文本的值就是我要处理的值

因此,我用Java开发了一个程序,它在mapper类中报告了以下错误:

java.lang.ClassCastException: com.mongodb.BasicDBObject cannot be cast to java.lang.String
    at HashTagsMapper.map(HashTagsMapper.java:27)
    at HashTagsMapper.map(HashTagsMapper.java:18)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
    at org.apache.hadoop.mapred.Child.main(Child.java:249)
这是映射器类-->

公共类HashTagsMapper扩展映射器
{   
公共void映射(对象键、BSONObject值、上下文上下文)引发IOException、InterruptedException
{
ArrayList name=新的ArrayList();
BSONObject实体=(BSONObject)value.get(“实体”);
BasicDBList hashtags=(BasicDBList)entities.get(“hashtags”);
对于(int index=0;index

有人能帮我吗?谢谢!

问题是类强制转换异常。为什么不尝试编写一个

(String)hashtags.get(index)
,但是


问题可能是basicDbList是BDBO对象的列表,您无法将父对象强制转换为子对象。

问题正是异常所说的-从
hashtags.get(index)返回的对象
不是一个
字符串,它是一个。这与您在文档中显示的内容相匹配-
哈希标记是一个对象数组,它依次包含键
文本
索引
。投票关闭,因为这是询问者的一个简单误解,对未来的读者来说不太可能有用。
(String)hashtags.get(index)
hashtags.get(index).toString()