【问题标题】:BDB select records where key starts withBDB 选择键以开头的记录
【发布时间】:2013-01-19 19:23:22
【问题描述】:

鉴于: 记录存储为一个简单的字符串DatabaseEntry key-value,keys看起来像:

  1. NODE_1
  2. NODE_1_PROP_1
  3. NODE_1_PROP_2
  4. NODE_1_PROP_3
  5. NODE_2
  6. NODE_2_PROP_1
  7. NODE_2_PROP_2
  8. NODE_2_PROP_3

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

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

【问题讨论】:

    标签: berkeley-db berkeley-db-je


    【解决方案1】:

    您需要使用辅助数据库。辅助数据库的想法是您为每条记录提供额外的标准。因此,鉴于您的示例,您需要提供辅助密钥创建者,它将采用“NODE_1_PROP_1”并返回“NODE_1”作为辅助密钥。然后您可以查询辅助数据库中的“NODE_1”,它将返回所有具有“NODE_1”作为键前缀的记录。关键是您不仅要使用密钥,还要使用记录的任何适当内容。确保您允许在辅助数据库中排序重复。

    HTH。

    【讨论】:

    • 谢谢,但我不能使用辅助密钥。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-13
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多