Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java驱动程序从mongo db获取嵌套文档_Java_Mongodb_Nested_Mongo Java - Fatal编程技术网

使用java驱动程序从mongo db获取嵌套文档

使用java驱动程序从mongo db获取嵌套文档,java,mongodb,nested,mongo-java,Java,Mongodb,Nested,Mongo Java,我需要为集合中的文档创建一个对象图。 我能够得到所有的键值对。以下是执行此操作的代码: import com.mongodb.*; import java.util.*; public class GetKeyValuePair { public static void print(DBObject doc) { Set<String> allKeys = doc.keySet(); Iterator<String> it = allKeys.itera

我需要为集合中的文档创建一个对象图。 我能够得到所有的键值对。以下是执行此操作的代码:

import com.mongodb.*;
import java.util.*;

public class GetKeyValuePair {
public static void print(DBObject doc) {
    Set<String> allKeys = doc.keySet();
    Iterator<String> it = allKeys.iterator();
    while (it.hasNext()) {
        String temp = it.next();
        System.out.print(temp + "-");
        if (doc.get(temp) instanceof BasicDBObject) {
            System.out.println("\n");
            print((DBObject) doc.get(temp));
        } else {
            System.out.println(doc.get(temp));
        }
    }

}

public static void main(String args[]) {
    try {
        Mongo m = new Mongo();
        DB db = m.getDB("test");
        Set<String> colls = db.getCollectionNames();
        DBCollection coll = db.getCollection("first");

        DBObject doc = new BasicDBObject();
        DBCursor cur = coll.find();
        Set<String> allKeys;
        Iterator<String> it;
        while (cur.hasNext()) {
            doc = cur.next();
            allKeys = doc.keySet();
            it = allKeys.iterator();
            print(doc);
            System.out.println("-------");
        }

    } catch (UnknownHostException e) {
        System.out.println(e.toString());
    } catch (MongoException.DuplicateKey e) {
        System.out.println("Exception Caught" + e);
    }
   }}
导入com.mongodb.*;
导入java.util.*;
公共类GetKeyValuePair{
公共静态作废打印(DBObject文档){
设置allKeys=doc.keySet();
Iterator it=allKeys.Iterator();
while(it.hasNext()){
String temp=it.next();
系统输出打印(温度+“-”);
if(基本CDB对象的文档获取(临时)实例){
System.out.println(“\n”);
打印((DBObject)doc.get(temp));
}否则{
系统输出打印项次(文件获取(临时));
}
}
}
公共静态void main(字符串参数[]){
试一试{
Mongo m=新的Mongo();
DB=m.getDB(“测试”);
Set colls=db.getCollectionNames();
DBCollection coll=db.getCollection(“第一”);
DBObject doc=新的BasicDBObject();
DBCursor cur=coll.find();
设置所有键;
迭代器;
while(cur.hasNext()){
doc=cur.next();
allKeys=doc.keySet();
it=allKeys.iterator();
打印(doc);
System.out.println(“----”);
}
}捕获(未知后异常e){
System.out.println(例如toString());
}捕获(MongoException.DuplicateKey e){
System.out.println(“异常捕获”+e);
}
}}
有没有其他方法可以做到这一点,我的意思是一个相当简单的方法。
提前感谢

如果您的用例允许,并且现有的Java ORM映射器(如Morphia)不适合您,那么您可以使用ReflectionDBObject。如果不是这样,你就会被你的方法所束缚,没有捷径。

我认为你需要更好地解释问题所在以及你想做什么。你是否在寻找你发布的代码被重新分解?还是你完全怀疑这种方法?@Tim我要求的是一种全新的方法。