我们在服务器管理中有以下模式 - 所有用户都有自己的用户,但部署完全由特殊部署用户执行,没有直接登录的可能性.
我们在Capistrano 2.x中使用了这个方法:
default_run_options[:shell] = "sudo -u deploy bash"
$ cap stage deploy -s user=thisisme
Run Code Online (Sandbox Code Playgroud)
我知道Capistrano 3.x有直接切换用户的方法:
task :install do
on roles(:all) do
as :deploy do
execute :whoami
end
end
end
Run Code Online (Sandbox Code Playgroud)
但是这段代码将填满所有任务,默认任务无论如何都不会继承部署用户.是否可以直接设置登录用户而无需将此代码拖到每个任务?
所以,案子很简单。我想在字段上进行不区分大小写的搜索name。幸运的是,最新的 Mongo 为我们带来了排序规则和排序索引的概念。
这将很容易与类似的东西一起工作:
db.users.find({ name: 'John' }).collation({ locale: 'en', strength: 2 })
Run Code Online (Sandbox Code Playgroud)
我有给定排序强度的字段的支持索引 - 非常有效。
但是,如果我想将搜索限制在某个更严格的范围内,例如具有一些companyId常量,事情就会变得有点混乱:
db.users.find({ companyId: 'some-company-id', name: 'John' }).collation({ locale: 'en', strength: 2 })
Run Code Online (Sandbox Code Playgroud)
该排序规则适用于 name AND some-company-id。因此,它也会查找SOME-COMPANY-ID和SoMe-CoMpAnY-iD,这可能会导致意外的冲突,并且由于所有情况都匹配,因此任何支持索引都companyId没有帮助。
我的问题是:如何在只有 1 个不区分大小写的字符串字段的情况下有效搜索?
可能的答案可能类似于正则表达式搜索:
db.users.find({ companyId: 'some-company-id', name: /^John$/i })
Run Code Online (Sandbox Code Playgroud)
...但不幸的是任何索引都无法支持此搜索。