2012-03-04 69 views
0

我有这个疑问:MongoMapper“键必须是字符串或符号”与OR查询

Model.where({'$or' => [{:date => nil}, {:date.gt => Time.new}]}).count 

我得到一个错误:

keys must be strings or symbols 

我分裂或查询中的两个,这两个作品。我可以为$或$做出错误吗?

以防万一:蒙戈映射器0.9.2)

以防万一,我更新到0.11

回答

0

但它的工作原理是这样的:

.where({:$or => [{:date => nil}, {:date => {:$gt => nil}}]}) 

我不知道为什么。

我是如何找到的?小姐在此输入

.where({:$or => [{:date => nil}]}) 

有趣的是吧?

+0

':date.gt'不是符号,而是符号操作符。 – 2012-03-04 02:15:27

+0

但是.where(:data.gt => Time.new)起作用,它也是一个SymbolOperator。这意味着SymbolOperator自动替换逻辑在嵌套查询中中断? :s – ProxyGear 2012-03-04 02:24:15

+0

但是'where(:data.gt => Time.now)'不使用':$或'。我不确定幕后发生了什么,在任何情况下似乎都是一种奇怪的限制。 – 2012-03-04 02:28:49

相关问题