【问题标题】:How to select only X number of records from mnesia如何从 mnesia 中仅选择 X 条记录
【发布时间】:2019-07-23 21:03:59
【问题描述】:

我只想从 mnesia 中选择 X 条记录。我们是否有任何提供此功能的函数调用?

我正在使用 :mnesia.select 从 mnesia 表中获取所有记录,但我只想从 mnesia 表中获取 X 条记录:

Mnesia.transaction(fn ->
  Mnesia.select(
    Person,
    [{{Person, :"$1", :"$2", :"$3"}, [{:>, :"$1", 3}], [:"$$"]}]
  )
end)

【问题讨论】:

    标签: erlang elixir mnesia


    【解决方案1】:

    我不确定您使用什么包装 mnesia,但标准库提供了 :mnesia.select/4,其中第三个参数是要检索的记录数。

    也就是说,这样的事情会起作用:

    x = 500
    
    :mnesia.select(
      :persons,
      [{{:persons, :"$1", :"$2", :"$3"}, [{:>, :"$1", 3}], [:"$$"]}],
      x,
      :read
    )
    

    【讨论】:

    • 完美这会返回 x 条记录,但这里有一个问题:如果我说 x = 10,那么我希望来自 mnesia 的最新 10 条记录,但我从某处获得 10 条记录记录列表的中间
    【解决方案2】:

    如果您使用 Memento 之类的包装器,则使用 limit 选项非常简单:

    Memento.Query.select(Person, {:>, :"$1", 3}, limit: 100)
    

    完全披露:我是 Memento 包的作者。

    【讨论】:

      猜你喜欢
      • 2011-09-05
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 2012-12-11
      • 2016-03-06
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多