我正尝试在phoenix应用程序中使用mongodb。然而,官方文档仅涉及RDBMS (postgresql)。有没有办法用phoenix框架1.4连接到mongodb?
我正在尝试在phoenix中构建一个具有非结构化数据的应用程序。我从ECTO mongodb的文档中看到了旧版本。对于1.4版本的phoenix,没有指定选项。
发布于 2019-01-01 12:25:09
似乎还没有与Ecto 3最新的MongoDB/Ecto集成。
但是Phoenix不是你的应用程序,它是一个接口。它提供web界面。除了Phoenix之外,您还可以在应用程序中使用其他东西,并且可以使用基于Phoenix的接口可以使用数据的方式包装MongoDB。
所以你的问题的答案是肯定的,有一种方法可以将MongoDB与Phoenix 1.4连接起来,但它不是即插即用的。
编辑:我拼凑了一个例子,可以在here中找到。



基本上,它涉及两个应用程序:一个是普通的elixir应用程序,它只是mongodb 0.4.7,并封装了一些函数。另一个是phoenix应用,它使用了前面提到的mongodb包装器应用。凤凰应用程序需要使用mix phx.new --no-ecto创建,表面上看你可以将其作为一个应用程序来创建,但这给了你更多的回旋余地。
发布于 2020-03-24 17:44:10
在Phoenix中使用MongoDB非常简单。您不需要使用Ecto之类的东西,因为它是为PostgreSQL等关系数据库设计的。您可以直接与mongodb驱动程序对话:
您可以将连接url放入您的Phoenix应用程序的配置环境(例如config.ex)中:
config :app, :mongodb,
url: "mongodb://localhost:27017,localhost:27018,localhost:27019/my_database?replicaSet=my_replica_set"URL指定三个节点的副本集。
在application.ex中,您可以像这样添加一个worker:
旧风格:
worker(Mongo, [[name: :mongo, url: Application.get_env(:app, :mongodb)[:url], timeout: 60_000, pool_size: 10]])需要样式:
{Mongo, [name: :mongo, url: Application.get_env(:app, :mongodb)[:url], timeout: 60_000, pool_size: 10]}worker启动GenServer的超时时间为60秒,池大小为10个连接。之后,您可以像往常一样使用MongoDB:
Mongo.find(:mongo, "accounts", %{"email" => the_email})https://stackoverflow.com/questions/53975518
复制相似问题