gpt4 book ai didi

ruby-on-rails - 当有自定义 _id 时,mongo-ruby-driver 不会在 upsert 上创建新文档

转载 作者:可可西里 更新时间:2023-11-01 09:19:58 26 4
gpt4 key购买 nike

我想用 mongo-ruby-driver 使用类似下面的东西来更新一个文档-

id = "#{params[:id]}:#{Time.now.strftime("%y%m%d")}"
# db.collection('metrics').insert({'_id' => id})
db.collection('metrics').update(
{ '_id' => id },
{ '$inc' => { "hits" => 1 } },
{ 'upsert' => true }
)

现在这只会更新现有文档,如果不存在则不会创建文档。执行这两个操作的唯一方法是取消注释上面的 insert() 命令。

如果我使用 mongo 控制台并尝试直接执行此更新插入(不需要 insert() ),它会按预期工作。

最佳答案

您应该在参数中使用符号而不是字符串。此代码有效。

db.collection('metrics').update(
{ '_id' => id },
{ '$inc' => { "hits" => 1 } },
{ :upsert => true }
)

事实上,你几乎可以在任何地方使用符号。这也有效:

db.collection(:metrics).update(
{ :_id => id },
{ :$inc => { :hits => 1 } },
{ :upsert => true }
)

关于ruby-on-rails - 当有自定义 _id 时,mongo-ruby-driver 不会在 upsert 上创建新文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9298039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com