在 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 之前我们没有问题。现在,这里应该将什么视为关键:phonestypenumber?如果我们拿手机,嵌入的文档应该如何反序列化?

此外,由于某些文档可能缺少数据(因为您向模型添加了字段),所以当缺少字段时可能不会引起注意。

由于您使用的是 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 */
}