首页 > 解决方案 > Mongodb ruby​​ 驱动:编辑 Collection::View 实例过滤器

问题描述

当我创建 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

标签: rubymongodb

解决方案


我不认为你可以。.filter是一种接受参数的方法。它不是哈希。
查看示例 并搜索代码

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

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

search_params = { name: "Sally" }

view.(search_params)

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

推荐阅读