mongodb中Criteria转换为es条件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb中Criteria转换为es条件相关的知识,希望对你有一定的参考价值。
参考技术A 可以用mongdbTemplate,elasticSearchTemplate。MongoDB与Elasticsearch都属于文档型数据库,Bson类同与Json,_objectid与_id原理一样。
所以主数据与从数据迁移到Elasticsearch平台,数据模型几乎无需变化。
Ruby on Rails - Criteria - Mongoid - where 条件为 2 x 2 列
【中文标题】Ruby on Rails - Criteria - Mongoid - where 条件为 2 x 2 列【英文标题】:Ruby on Rails - Criteria - Mongoid - where condition with 2 by 2 columns 【发布时间】:2021-03-10 03:39:04 【问题描述】:我正在使用 RoR + MongoDB (Mongoid),我需要使用 2 列或条件来应用过滤器。
我看到了一些类似这样的建议,但没有奏效。
query = query.where(name: /#attributes[:name]/i).or(query.where(email: /#attributes[:email]/i))
如果我使用这个,看起来 or 将适用于所有条件:
query = query.where(name: /#attributes[:name]/i).or(email: /#attributes[:email]/i)
有人有什么建议吗?
【问题讨论】:
这些查询会产生什么?您想要的结果是什么? 我得到的结果是:SELECT * FROM people WHERE name LIKE '%mateus%' OR email LIKE '%mateus%' 我想要这个结果:SELECT * FROM people WHERE (name LIKE '%mateus %' OR email LIKE '%mateus%') 我需要将“OR”仅应用于姓名和电子邮件,而不应用于其后应用的条件。 这已经是Mongoid的行为了。 【参考方案1】:据我了解,正确的查询应该是:
query = query.or([name: /#attributes[:name]/, email: /#attributes[:email]/i])
这将返回具有name
属性且值来自attributes[:name]
的文档或具有email
属性且值来自attributes[:email]
的文档
这能回答你的问题吗?
【讨论】:
以上是关于mongodb中Criteria转换为es条件的主要内容,如果未能解决你的问题,请参考以下文章