使用聚合检查数组中是否存在值

时间:2019-03-18 08:42:18

标签: mongodb mongoose

我正在使用mongoDB 3.2版。并且我想检查字符串数组中是否存在字符串,我想使用正则表达式,以便如果给定字符串的一部分仅存在于数组中的字符串中,则应返回该记录。 这是一个记录示例:

{
    name: "initiative 1",
    portfolioItems: ["Non clinical", "ITS portfolio", "Lean"]
}

以下查询不起作用:

db.collection.aggregate([
    {
        $match:
            { 'portfolioItems' : { $in: [/term/] } }
    }
])

有什么可以实现的吗?

2 个答案:

答案 0 :(得分:1)

尝试这个。

db.collection.aggregate([
{
    $match:
    {"portfolioItems":{'$regex':"^it", '$options': 'i'}}
}
])

符号^用于从字符串的第一个字符串开始。如果您不需要它。您可以删除它。

您的查询成为

 {
    $match:
    {"portfolioItems":{'$regex':"^"+term, '$options': 'i'}}
}

答案 1 :(得分:0)

您必须匹配数组每个元素中的模式。 试试这个:

{ 'portfolioItems' : { $regex: [/term/] } }