Mongodb ruby​​驱动程序:编辑Collection :: View实例过滤器

时间:2018-10-09 16:18:08

标签: ruby mongodb

当我使用以下命令创建Collection :: View实例时

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')

view = client[:users].find( { name: "Sally" } )
=> #<Mongo::Collection::View:0x69824029475340 namespace='test.users' @filter={"name" => "Sally"} @options={}>

稍后如何更改此实例的filter哈希?这不起作用:

view.filter.merge!("age" => 30)
=> #FrozenError: can't modify frozen BSON::Document

1 个答案:

答案 0 :(得分:1)

我认为你不能。 .filter是一种接受参数的方法。它不是哈希。
参见examples 并搜索the code

但是您可能可以执行以下操作:

view = lambda { |hash|  client[:users].find(hash) }

search_params = { name: "Sally" }

view.(search_params)

view.(search_params.merge!({foo: 'bar'}))