尝试插入 Mongo DB 时,Elixir 项目中出现“不支持的 OP_QUERY 命令:插入”

问题描述 投票:0回答:5

我有一个 Mix 项目,我正在尝试将一些数据插入到我的本地数据库中。

我已将 Mongo 依赖项添加到我的项目中,然后添加用于连接数据库并将数据存储到其中的代码行。

{:ok, pid} =
  Mongo.start_link(
    url: "mongodb://localhost:27017/tweet_processor")
    
{:ok, result} =
  Mongo.insert_one(pid, "tweets", tweet_to_insert)

但我不断

{:error, %Mongo.Error{
  code: 352,
  host: nil,
  message: "command failed: Unsupported OP_QUERY command: insert"}}

可能是什么问题?

database mongodb elixir
5个回答
5
投票

我疯狂猜测(根据您共享的命令的形式)您正在使用

mongodb
包。它明确声明它支持 MongoDB 版本 2.6÷4.0。我还疯狂猜测您正在使用 MongoDB 5+ 后端,它有
OP_QUERY
明确弃用

您使用的驱动程序是OSS,从其源代码中,人们可能会看到

Mongo.insert_one/4
委托低级调用,从而发出
OP_QUERY

解决该问题的一种可能性是将 MongoDB 降级到 v4.0,另一种(最受社区赞赏的)是向库提供 PR,支持 MongoDB 5+。


1
投票

更新 mongo-java-driver 版本并重试

<dependency>
   <groupId>org.mongodb</groupId>
   <artifactId>mongo-java-driver</artifactId>
   <version>3.12.2</version>
</dependency>

1
投票

我遇到了同样的错误。 “不支持的 OP_QUERY 命令:插入”对我来说,这最终成为 Mongoose 的问题。将 mongoose 升级到 ^6.5.2 后,它可以正常工作。

使用 NPM,您可以像这样更新包:

npm install [email protected]

0
投票

您可以使用这个驱动程序,它支持 MongoDB 5.x


0
投票

我在使用 pymongo 时遇到了类似的问题。最初我使用驱动程序版本3.6,但更改为3.11并解决了问题。

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