首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb文档检索

Mongodb文档检索
EN

Stack Overflow用户
提问于 2012-06-27 18:37:55
回答 1查看 297关注 0票数 1

我正在使用java中的Mongodb。我想要检索文档中的文档。

我使用下面的代码来实现这个目的:

代码语言:javascript
复制
        DB db = null;
        int count = 0;

        //Enter the day for which you want to search for logged on users
        String dayToSearch = "27-06-2012"; //Enter in the format dd-MM-yyyy

        db = DatabaseConnection.getDatabaseObject();
        Set<String> colls = db.getCollectionNames();

        for (String s : colls) {

            DBCollection coll = db.getCollection(s);

            DBObject obj = coll.findOne();

            if(obj==null)
                System.out.println("This is only null.");

            DBObject obj1 = (DBObject)obj.get("LoginRequest");
            if(obj1!=null){
                String time = (String)obj1.get("Time");
                if(time==dayToSearch){
                    BasicDBObject query = new BasicDBObject();
                    query.put("LoginResponse", new BasicDBObject());
                    DBCursor cur1 = coll.find(query);
                    if(cur1.hasNext()){
                        count++;
                    }
                }
            }
            else
                System.out.println("It is null again!!!");
            System.out.println(s);
        }

        System.out.println("No.of users logged in successfully: " + count);

但是我在DBObject obj1 = (DBObject)obj.get("LoginRequest");得到了空值。每个集合的所有obj1对象都是空的。我打印了obj,结果是正确的。但是obj1结果是空的。

我的数据库是这样的:

代码语言:javascript
复制
{
        "_id" : ObjectId("4fead665b79eedd6a5776f38"),
        "test" : "hi",
        "NBC Connection id" : "6f829b01382d556eaf16c34617C2",
        "LoginRequest" : {
                "Time" : "27-06-2012",
                "Model" : null,
                "Version" : null,
                "Username" : "acpptu20000",
                "Password" : "*******",
                "Language" : "en",
                "Manufacturer" : null
        }
}
{
        "_id" : ObjectId("4fead67cb79eedd6a5776f5b"),
        "GetInfoRequest" : {
                "MaxCallLogs" : 45,
                "MaxNewVoicemails" : 15,
                "GetInfoDateOptions" : 7,
                "MaxSavedVoicemails" : 15,
                "SubscribeForUpdates" : false
        }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-27 19:41:58

我认为你的代码比需要的复杂得多。

试试这样的东西:

代码语言:javascript
复制
        for(String s : colls)
        {
            DBCollection coll = db.getCollection(s);
            DBCursor whatIHaveBeenLookingFor = coll.find(
                new BasicDBObject().append("LoginRequest",
                new BasicDBObject().append("Time", dayToSearch)));
        }

我没有测试它,因为我没有你的数据库。因此,您可能需要更改某些内容。但这就是您可以轻松地从MongoDB中检索内容的方法。

附言:确保你真的需要遍历所有的集合。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11224323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档