在 Java 中,我怎样才能简单地从 mongo 文档中检索密钥?
In Java how can I simply retrieve the Keys from a mongo document?
我知道 MongoDB 是一个 "schemaless" 数据库,但我无法在 Java 中复制此 mongo 查询似乎很奇怪(并且令人沮丧):
Object.keys(db.appnOffer.findOne());
我试图将 keySet
拉入数组并遍历它,但无济于事。
因为 MongoDB 是无模式的(尽管从应用程序的角度说它具有灵活的模式更正确),这不能可靠地工作。考虑这样的文档
{
_id: new ObjectId(),
lastname: "Bar",
firstname: "Foo",
phones:[
{type: "work", number: "+1 234 567890"},
{type: "mobile", number: "+1 555 000000"}
]
}
现在,在到达 phones
之前我们没有问题。现在,这里应该将什么视为关键:phones
或 type
或 number
?如果我们拿手机,嵌入的文档应该如何反序列化?
此外,由于某些文档可能缺少数据(因为您向模型添加了字段),所以当缺少字段时可能不会引起注意。
由于您使用的是 Java,我建议您改为迭代 entity classes' declared fields。
也就是说:DBCollection.findOne() returns a DBObject, which inherits the keySet() method of BSONObject。此方法 returns 一个 Set<String>
您可以按如下方式对其进行迭代:
DBObject obj = collection.findOne();
Set<String> keys = obj.keySet();
Iterator iterator = keys.iterator();
while(iterator.hasNext()){
String key = iterator.next();
Object value = obj.get(key);
/* Do whatever you want */
}
我知道 MongoDB 是一个 "schemaless" 数据库,但我无法在 Java 中复制此 mongo 查询似乎很奇怪(并且令人沮丧):
Object.keys(db.appnOffer.findOne());
我试图将 keySet
拉入数组并遍历它,但无济于事。
因为 MongoDB 是无模式的(尽管从应用程序的角度说它具有灵活的模式更正确),这不能可靠地工作。考虑这样的文档
{
_id: new ObjectId(),
lastname: "Bar",
firstname: "Foo",
phones:[
{type: "work", number: "+1 234 567890"},
{type: "mobile", number: "+1 555 000000"}
]
}
现在,在到达 phones
之前我们没有问题。现在,这里应该将什么视为关键:phones
或 type
或 number
?如果我们拿手机,嵌入的文档应该如何反序列化?
此外,由于某些文档可能缺少数据(因为您向模型添加了字段),所以当缺少字段时可能不会引起注意。
由于您使用的是 Java,我建议您改为迭代 entity classes' declared fields。
也就是说:DBCollection.findOne() returns a DBObject, which inherits the keySet() method of BSONObject。此方法 returns 一个 Set<String>
您可以按如下方式对其进行迭代:
DBObject obj = collection.findOne();
Set<String> keys = obj.keySet();
Iterator iterator = keys.iterator();
while(iterator.hasNext()){
String key = iterator.next();
Object value = obj.get(key);
/* Do whatever you want */
}