具有多个字段的MongoDB LIKE语句

编程入门 行业动态 更新时间:2024-10-21 14:28:46
本文介绍了具有多个字段的MongoDB LIKE语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

使用SQL,我们可以执行以下操作:

select * from x where concat(x.y ," ",x.z) like "%find m%"

When X.Y="Find"和X.Z="Me"。

当我使用类似如下的JSON结构时,我如何使用MongoDB做同样的事情:

{ data: [ { id:1, value : "find" }, { id:2, value : "me" } ] } 推荐答案 这里与SQL的比较是无效的,因为没有关系数据库具有与MongoDB相同的嵌入式数组概念,并且在您的示例中提供了这一概念。您只能在表的"行中的字段"之间"连接"。基本上不是一回事。

您可以使用$where的JavaScript求值来实现这一点,这并不是最优的,但这是一个开始。你也可以谨慎地给比赛增加一些额外的"聪明":

db.collection.find({ "$or": [ { "data.value": /^f/ }, { "data.value": /^m/ } ], "$where": function() { var items = []; this.data.forEach(function(item) { items.push(item.value); }); var myString = items.join(" "); if ( myString.match(/find m/) != null ) return 1; } })

这就对了。我们通过在每个单词中提取"测试字符串"中的第一个字符,并将标记与文档中数组的每个元素进行比较,对此进行了一些优化。

下一部分将数组元素"连接"成一个字符串,然后对连接的结果执行"regex"比较(与"like"相同),以查看是否匹配。如果匹配,则该文档被视为匹配并返回。

不是最优的,但这些是MongoDB在这样的结构上可用的选项。或许这种结构应该有所不同。但您没有具体说明为什么要这样做,因此我们无法为您提供更好的解决方案来实现您的目标。

更多推荐

具有多个字段的MongoDB LIKE语句

本文发布于:2023-11-22 19:27:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1618713.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多个   字段   语句   MongoDB

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!