过滤字段值或不存在
Posted
技术标签:
【中文标题】过滤字段值或不存在【英文标题】:Filter on field value or not exists 【发布时间】:2021-04-07 19:51:26 【问题描述】:我正在尝试过滤特定值或它不存在的字段。
我有特定值的部分
"query":
"match":
"app.serviceType":
"query": "MY_VALUE",
"type": "phrase"
我还想在字段 serviceType
根本不存在的情况下添加此内容。
基本上我想要这样的:
serviceType == "MY_VALUE" || string.IsNullOrEmpty(serviceType)
【问题讨论】:
你看到这个回复了吗:***.com/questions/56590057/… @YLR 不,我的搜索中没有出现该结果。 【参考方案1】:此请求必须与您的用例匹配:
"query":
"bool":
"should": [
"bool":
"must": [
"exists":
"field": "serviceType"
,
"match_phrase":
"serviceType": "MY_VALUE"
]
,
"bool":
"must_not": [
"exists":
"field": "serviceType"
]
]
【讨论】:
这没有用,但它确实让我很接近。我不得不将查询开头的第一个must
更改为should
。【参考方案2】:
根据之前的答案(没有用但让我很接近),我能够让它工作。
"query":
"bool":
"should": [
"bool":
"must": [
"exists":
"field": "app.serviceType"
,
"match_phrase":
"app.serviceType": "MY_VALUE"
]
,
"bool":
"must_not": [
"exists":
"field": "app.serviceType"
]
]
【讨论】:
以上是关于过滤字段值或不存在的主要内容,如果未能解决你的问题,请参考以下文章
如果存在,则在 mongodb 中增加嵌套字段值或创建嵌套字段
如果存在,则在 mongodb 中增加嵌套字段值或创建嵌套字段