如何从mnesia中仅选择X个记录

问题描述 投票:2回答:2

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

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

Mnesia.transaction(fn ->
  Mnesia.select(
    Person,
    [{{Person, :"$1", :"$2", :"$3"}, [{:>, :"$1", 3}], [:"$$"]}]
  )
end)
erlang elixir mnesia
2个回答
4
投票

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

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

x = 500

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

3
投票

如果你使用像Memento这样的包装器,那么使用limit选项非常简单:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.