java - 如何使用java显示mongoDB数组

标签 java mongodb

我想从 mongoDB 中获取数组元素并显示它,这是我的示例代码。

String[] previliges = new String[20];
String g_name = (String)jComboBox2.getSelectedItem();
DBCursor f;
BasicDBObject query = new BasicDBObject("group_name", g_name);

connection.MongoConnection con = new MongoConnection();
con.createConnection();
con.selectDB("test", "user_group");

f = con.coll.find(query);
previliges = (String[])f.next().get("privileges");
System.out.println(previliges.length);

它给了我一个异常(exception) -> com.mongodb.BasicDBList 不能转换为 [Ljava.lang.String;

我来自 mongodb 集合的示例文档:

{    
    "_id" : ObjectId("51c7ebd9e4b096449a530024"),  
    "group_name" : "assss",  
    "privileges" : [  
        "View Log History",  
        "Communication"  
    ]  
}

最佳答案

特权数组将返回为 BasicDBList,而不是字符串数组。所以你不能将它转换为 String[]。

而不是做:

previliges=(String[]) f.next().get("privileges");
System.out.println(previliges.length);

尝试:

BasicDBList privileges = (BasicDBList) f.next().get("privileges");
System.out.println(privileges.size());

您可以像遍历任何列表一样遍历它:

for (Object privilege : privileges) {
    String privilegeAsString = (String) privilege;
}

关于java - 如何使用java显示mongoDB数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17320300/

相关文章:

java - 以多个下划线结尾的行

java - 保持数据库连接始终处于 Activity 状态的正确方法

node.js - 如何捕获 Mongoose 的错误代码

mongodb - 如何在Mongoose中按多个字段排序的列表中获取项目排名

java - 如何编写一个调用另外两个任务的 gradle 任务?

java - Vaadin 面板在页面之间共享

java 简单日期格式

mongodb - 在 MongoDB 中更新文档时的条件更新插入(插入)

c# - ASP.NET MVC3 和 MongoDB

node.js - 如何使用 Mongoose 删除中间件进行级联删除?