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

如何通过手机号搜索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。 任何指导或帮助将受到高度赞赏。

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

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

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

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