栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用猫鼬查找获取包含字符串一部分的所有值?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用猫鼬查找获取包含字符串一部分的所有值?

您几乎自己在标签中回答了这个问题。MongoDB有一个

$regex


运算符,它允许将正则表达式作为查询提交。因此,您查询包含“ Alex”的字符串,您可以这样做:

Books.find(    { "authors": { "$regex": "Alex", "$options": "i" } },    function(err,docs) {     } );

您也可以这样做:

Books.find(    { "authors": /Alex/i },     function(err,docs) {    });

两者都是有效的,并且与您以正确的受支持语法尝试的方式不同,如文档中所示。

但是,当然,如果您实际上是在问“如何仅对那些与字符串中的“ Alex”匹配的结果获取“数组”结果?” 那么这有点不同。

超过复杂的匹配 一个
数组元素是域聚合框架(或可能的MapReduce,但这是很慢),在需要“过滤器”的数组的内容。

您的开始大体相同。此处的关键是对

$unwind

数组内容进行“反规范化”,以便能够作为单独的文档正确地“过滤”。然后,使用“匹配”文档重新构建数组。

Books.aggregate(    [        // Match first to reduce documents to those where the array contains the match        { "$match": { "authors": { "$regex": "Alex", "$options": i }        }},        // Unwind to "de-normalize" the document per array element        { "$unwind": "$authors" },        // Now filter those document for the elements that match        { "$match": { "authors": { "$regex": "Alex", "$options": i }        }},        // Group back as an array with only the matching elements        { "$group": { "_id": "$_id", "title": { "$first": "$title" }, "authors": { "$push": "$authors" }, "subjects": { "$first": "$subjects" }        }}    ],    function(err,results) {    })


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号