0
我在我的Mongo表中存储了作为散列存储的字段。Mongoid:通过哈希获取行
"values" : {
"4e64b7cb3e9b3a4d8a00000b" : "Page",
"4e77304b3e9b3a4ace000003" : "Michael",
"4e64b7cb3e9b3a4d8a00000c" : 6,
"4e64b7cb3e9b3a4d8a00000d" : 4,
"4e64b7cb3e9b3a4d8a00000e" : 2,
"4e64b7cb3e9b3a4d8a00000f" : 6,
"4e64b7cb3e9b3a4d8a000010" : 12
}
现在我需要获取所有行values
存储数据等于Michael
像红宝石:
Table.all.select{|row| row.values.any?{|k,v| v == 'Michael' }}
好办法!感谢名单!但是现在我已经有了很多与“4e64b7cb3e9b3a4d8a00000b”相关的逻辑:“Page”这种存储数据(它应该被重构)。那么也许我可以在不重构所有代码和方案的情况下进行这种提取? – fl00r 2011-12-18 13:59:40
是的,你可以像其他任何东西一样进入对象 - 但它不会使用索引,所以它会很慢**:'db.foo.find({“values.4e64b7cb3e9b3a4d8a00000b”:“Page” })'。 – mnemosyn 2011-12-18 14:09:22
'4e64b7cb3e9b3a4d8a00000b'是动态令牌:) – fl00r 2011-12-18 14:10:11