gpt4 book ai didi

java - MongoDB 从 BasicDBObject (Java) 中提取值

转载 作者:IT老高 更新时间:2023-10-28 13:18:09 25 4
gpt4 key购买 nike

我无法从 MongoDB 中的查询文档中检索值。

比如doc结构是这样的:

    {
"_id": {
"$oid": "50f93b74f9eccc540b302462"
},
"response": {
"result": {
"code": "1000",
"msg": "Command completed successfully"
},
"resData": {
"domain:infData": {
"domain:name": "ritesh.com",
"domain:crDate": "2007-06-15T12:02:36.0000Z",
"domain:exDate": "2013-06-15T12:02:36.0000Z"
}
}
}
}

查询代码为:

    DBCollection collection = db.getCollection("domains");

BasicDBObject p = new BasicDBObject("response.resData.domain:infData.domain:name", "ritesh.com");
DBCursor c = collection.find(p);

while(c.hasNext()) {
DBObject obj = c.next();
Object value = obj.get("response.resData.domain:infData.domain:name");
}

它查询良好并获取文档,但我似乎无法弄清楚如何从 DBObject(或 BasicDBObject)中提取“response.resData.domain:infData.domain:name”或其他类似嵌套值因为 c.next() 返回类型 BasicDBObject)。

我可以一次获取一个对象,例如:

    ((DBObject)obj.get("response")).get("resData")....

但这看起来很麻烦。

我想既然您可以在 BasicDBObject 中放置()一个嵌套字段值,例如:

    basicDBObject.put("response.resData.domain:infData.domain:name", "ritesh.com");

我可以类似地使用 get() 使用相同类型的键从 BasicDBObject 结果中获取。就像我试图在上面的代码中做的那样:

    Object value = obj.get("response.resData.domain:infData.domain:name");

但这会返回一个空值。

这可能很简单,但我似乎无法弄清楚。而且我在网上检查过的所有示例都只从结果中获取未嵌套的值。喜欢

    doc.get("name");

而不是类似的东西:

    doc.get("name.lastname.clanname");

任何帮助将不胜感激。谢谢!

最佳答案

没有办法像使用 Java 驱动程序那样链接属性名称(肯定是 gets,根据 thisput 是也不应该工作)。

您需要按照您的建议一次获取一个对象。

((DBObject)obj.get("response")).get("resData")

here一个潜在的 future 功能,它将允许您的语法可能工作(尽管可能使用新的方法名称)。

关于java - MongoDB 从 BasicDBObject (Java) 中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14410531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com