【问题标题】:Mongoid update with Positonal operator not working位置运算符不工作的 Mongoid 更新
【发布时间】:2012-01-17 08:52:40
【问题描述】:

我正在尝试使用来自 ruby​​ mongoid 的 $ positional operator 更新 mongodb 嵌入式集合,但它不起作用。在mongoid查询下面

Viewcounter.collection.update({:item_id=>BSON::ObjectId('yyyy'),'viewinfos.remote_ip' => 'xxxx'},{'$inc' => {'viewinfos.$.viewcount' => 1}})

经过一番挖掘后,我发现没有 mongodb 查询适用于 mongoid update.include 下面的简单查询

Item.collection.update({'_id' =>BSON::ObjectId('sss')},{:isused => false})

有没有人有更好的方法来使用 mongoid 进行位置运算符查询?

编辑

但是根据mongodb official ruby driver documentation,这应该可以。摘录下方

coll.update({"_id" => doc["_id"]}, {"$set" => {"name" => "MongoDB Ruby"}})

【问题讨论】:

  • 没有爱?希望对你有用。

标签: ruby-on-rails ruby mongodb mongoid positional-operator


【解决方案1】:

一般的想法是你会下拉到 ruby​​ 驱动程序(通过集合)并这样做:

Viewcounter.collection.update({"viewinfos.remote_ip" => "xxxx"}, {:$inc => {"viewinfos.$.viewcount" => 1}})

【讨论】:

  • 你的方法很好。但是有没有其他方法可以将父 ID 与 $ 位置运算符一起包含在内。因为我需要根据父 ID 和嵌入字段更新嵌入的 coll..
  • 您可以在查询文档中抛出额外的条件来选择您想要的父级。 (我认为这就是您要问的问题)否则您可能需要以编程方式在客户端执行此操作。
猜你喜欢
  • 2015-01-25
  • 2019-06-18
  • 1970-01-01
  • 1970-01-01
  • 2018-06-03
  • 2021-09-18
  • 2015-01-12
  • 2013-09-26
  • 1970-01-01
相关资源
最近更新 更多