如何搜索记录然后将其删除

时间:2015-07-16 05:35:31

标签: ruby-on-rails mongodb ruby-on-rails-4

如何通过手机号搜索ttoken记录。然后删除该记录?

User.rb:

field :ttokens, type: Hash, :default => {} # Stored as hash over numbers

通常,rails控制台中的ttokens值如下:

ttokens: {"919839398393"=>{"atoken"=>"f704e803061e594150b09ad8akabfc6105ac85ab", "confirmed"=>true}, "91812798765"=>{"atoken"=>"255cb70926978b93eik67edb52fa23a163587b4b", "confirmed"=>true}}

我需要一个mongodb查询来搜索手机号码的ttoken记录,然后删除该记录。使用的数据库是MongoDB。任何指导或帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

您需要对嵌入元素使用MongoDB'点符号',这意味着“键”必须是字符串类型的符号。同时应用$exists来匹配has中的键所在的位置以及来自mongoid的.unset()方法:

User.where('_id'=> userId, 'ttokens.919839398393'=> { '$exists' => true }).unset(
  'ttokens.919839398393'
)

这实际上是MongoDB的$unset运算符,它通过指定的路径从文档中删除“键”。

从示例文档中,这将匹配并删除第一个键,只留下另一个键。