berkeleydb-BDB选择关键字开头的记录



给定:记录存储为一个简单的字符串DatabaseEntry键值,密钥看起来像:

  1. 节点_1
  2. 节点_1_PROP_1
  3. 节点_1_PROP_2
  4. 节点_1_PROP_3
  5. 节点2
  6. 节点_2_PROP_1
  7. 节点_2_PROP_2
  8. 节点_2_PROP_3

如何:只选择ID以NODE_1开头的记录,结果1-4?

我使用过Cursor.getNext(),但Cursor类的一般问题是它会一直转到下一个记录,所以如果我这样做,我每次都必须评估键前缀,以便在光标位于NODE_2时停止。

您需要使用辅助数据库。辅助数据库的理念是为每个记录提供额外的条件。因此,在您的示例中,您需要提供辅助密钥创建者,它将使用"NODE_1_PROP_1"并返回"NODE_1"作为辅助密钥。然后,您可以在辅助数据库中查询"NODE_1",它将返回所有以"NODE_2"为关键字前缀的记录。关键是,您不仅要使用密钥,还要使用记录中的任何适当内容。确保在辅助数据库中允许排序的重复项。

HTH。

我已经通过将字符串转换为二进制数组解决了这个问题,在这种情况下,NODE_1_PROP_1将先于NODE_2,这是我使用字符串作为键时的问题。

相关内容

  • 没有找到相关文章

最新更新