gpt4 book ai didi

java - 如何检索 DBObject 的架构?

转载 作者:行者123 更新时间:2023-12-01 14:03:29 24 4
gpt4 key购买 nike

在 mySQL 中,describe 语句可用于检索给定表的架构,不幸的是我找不到 MongoDB java 驱动程序的类似功能:(

假设我有流动的 BSON 文档:

{
_id: {$oid:49},
values: { a:10, b:20}
}
,
{
_id: {$oid:50},
values: { b:21, c:31}
}

现在假设我这样做:

DBObject obj = cursor.next();
DBObject values_1 = (DBObject) obj.get("values");

架构应该是这样的:

>a : int
>b : int

下一个文档:

DBObject obj = cursor.next();
DBObject values_2 = (DBObject) obj.get("values");

架构应该是:

>b : int
>c : int

既然我解释了模式重试是什么,请问有人可以告诉我如何做吗?

如果有帮助,在这种情况下,我只需要知道字段名称(因为数据类型始终相同,但最好也知道如何检索数据类型)。

<小时/>

一个工作方法是将 DBObject 转换为 Map,然后将 Map 转换为 Set,将 Set 转换为 Iterator,并提取属性名称/值...现在仍然知道如何提取数据类型。

这是:

    DBObject values_1 = (DBObject) obj.get("values");
Map _map = values_1.toMap();
// Set set = _map.entrySet(); // if you want the <key, value> pairs
Set _set_keys = _map.keySet();
Iterator _iterator = _set_keys.iterator();
while (_iterator.hasNext())
System.out.println("-> " + _iterator.next());

最佳答案

DBObject 有一个名为 keySet 的方法( documentation) 。您不需要先转换为 Map

目前还没有公开的方法来确定基础 BSON 数据类型,因此您需要使用 instanceofgetClass 进行研究来确定基础数据类型从 get 返回的 Object

如果你看source例如,查看 BasicBSONObject 的代码,您将看到强制转换的辅助函数如何执行一些基本检查,然后强制强制转换。

关于java - 如何检索 DBObject 的架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19134005/

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