【发布时间】:2011-02-25 22:32:40
【问题描述】:
Mongo ruby 驱动程序似乎将您的结果放入以字符串为键的散列中。有没有办法告诉它把键转换成符号?
【问题讨论】:
标签: ruby-on-rails ruby mongodb
Mongo ruby 驱动程序似乎将您的结果放入以字符串为键的散列中。有没有办法告诉它把键转换成符号?
【问题讨论】:
标签: ruby-on-rails ruby mongodb
根据FAQ,即使Mongo中有符号类型,并且可以将符号存储在值中,但BSON格式规定键必须是字符串。
【讨论】:
如果您有一个使用字符串作为键的Hash,并且您希望能够使用Symbols 作为键来访问其值,则可以使用HashWithIndifferentAccess。如果你没有使用 Rails,你可以通过 ActiveSupport gem 获取这个类。
my_hash = { 'name' => 'Joe', 'email' => 'joe@schmoe.com' }
my_hash = HashWithIndifferentAccess.new my_hash
puts my_hash[:name] # "Joe"
【讨论】:
Strings 来存储数据,当您尝试使用Symbol 访问值时,它会将其转换为String 以查找数据。因此,密钥存储为Strings,用于迭代密钥等。