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

dm7nw8vv  于 2023-04-20  发布在  Go
关注(0)|答案(4)|浏览(284)

我有一个混合项目,我试图插入一些数据到我的本地数据库。
我在项目中添加了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"}}

有什么问题吗?

yptwkmov

yptwkmov1#

我猜你使用的是mongodb包。它明确声明它支持MongoDB版本2.6÷4.0。我还猜你使用的是MongoDB 5+后端,它明确反对OP_QUERY
您使用的驱动程序是OSS,从它的源代码中,您可能会看到Mongo.insert_one/4委托给发出OP_QUERY的低级调用。
解决这个问题的一种可能性是将MongoDB降级到v4.0,另一种(最受社区欢迎)是为库提供PR,支持MongoDB 5+。

bakd9h0s

bakd9h0s2#

您可以使用支持MongoDB 5.x的this driver

qoefvg9y

qoefvg9y3#

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

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

pu82cl6c4#

我得到了同样的错误。对我来说,这最终是Mongoose的问题。在将Mongoose升级到^6.5.2后,它可以正常工作。
使用NPM,你可以像这样更新包:

npm install mongoose@6.5.2

相关问题