使用MongoDB聚合条件搜索字符串并与另一个字段连接

内蒂亚

我想在名为的字段上搜索一组文档SERVICES
当我搜索时,以及

如果:我发现字符串开头的第一个单词是MailorEnvelopes deliveredLost suitcaseor Found mail

然后:我在字符串中添加SERVICES句点和LAGUAGES字段的字符串值LAGUAGES字符串是:“需要立即采取行动”。

样本数据:

/* 1 */
{
    "SERVICES" : "Mail has been packaged and sitting in mail room",
    "LAGUAGES" : "Needs immediate action"
}

/* 2 */
{   
    "SERVICES" : "Envelopes delivered to client but were not signed for by anyone",
    "LAGUAGES" : "Needs immediate action"
}

/* 3 */
{
    "SERVICES" : "There were problems with the client's luggage",
    "LAGUAGES" : "Needs immediate action"
}

/* 4 */
{
    "SERVICES" : "Lost suitcase at airport while in transit",
    "LAGUAGES" : "Needs immediate action"
}

/* 5 */
{
    "SERVICES" : "Found mail sitting at airport mailing room",
    "LAGUAGES" : "Needs immediate action"
}

要求的输出:

/* 1 */
{
    "SERVICES" : "Mail has been packaged and sitting in mail room. Needs immediate action"
}

/* 2 */
{
    "SERVICES" : "Envelopes delivered to client but were not signed for by anyone. Needs immediate action"
}

/* 3 */
{
    "SERVICES" : "Lost suitcase at airport while in transit. Needs immediate action"
}

/* 4 */
{
    "SERVICES" : "Found mail sitting at airport mailing room. Needs immediate action"
}

尝试过以下查询:

$match只是为了过滤信息而进行了第一次操作$OR但似乎仅对语句中的最后一个进行了过滤需要帮忙。

{
  $match: {
    $or: [
      {
        SERVICES: { $regex: "Mail.* " },

        SERVICES: { $regex: "Envelopes delivered.* " },

        SERVICES: { $regex: "Lost suitcase. * " },

        SERVICES: { $regex: "Found mail. * " },
      },
    ];
  }
}

如何搜索这些字符串并返回以上输出。谢谢。

谁-假面真灵魂

您需要使用聚合的$ concat运算符:

db.collection.aggregate([
  {
    $match: {
      $or: [
        {
          SERVICES: { $regex: /^Mail/ }
        },
        {
          SERVICES: { $regex: /^Envelopes delivered/ }
        },
        {
          SERVICES: { regex: /^Lost suitcase/ }
        },
        {
          SERVICES: { $regex: /^Found mail/ }
        }
      ]
    }
  },
  /** `$addFields` will re-create `SERVICES` field with new concated string value
   *   Or if you just want `SERVICES` field then use `$project` with `_id :0 ` */
  {$addFields : {SERVICES : {$concat : ['$SERVICES','.',' ','$LAGUAGES']}}}
])

或者您可以使用$in代替$or

db.collection.aggregate([
  { $match: { SERVICES: { $in: [/^Mail/, /^Envelopes delivered/, /^Lost suitcase/, /^Found mail/] } } } , 
  {$addFields : {SERVICES : {$concat : ['$SERVICES', '.', ' ','$LAGUAGES']}}}
]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在另一个字段中使用生成的字符串

使用Lo在另一个字符串中使用AND搜索字符串数组

使用搜索字符串读取另一个字符串

如何使用Regex搜索不以另一个字符串开头的字符串

使用哈希在另一个字符串中搜索子字符串

SQL WHERE 条件是一个字段的字符串可以在另一个字段中找到

使用getch后如何在另一个字符串的末尾连接一个字符串

如何查询MongoDB的一个字段值是否以字符串的形式出现在另一个字段值中?

如何从MongoDb中另一个字段的子字符串创建字段?

搜索字符串中的单词,并根据另一个字符串拆分连接的字符串

如何在另一个字符串中搜索一个字符串?

使用any()在另一个字符串中搜索多个字符串

MongoDB聚合:$ Project(如何在同一投影管道的另一个字段上使用一个字段)

在另一个字符串中搜索确切的字符串

搜索与另一个字符串元素列表匹配的字符串元素列表

在另一个字符串中搜索子字符串

如何用 MySQL 中另一个字符串和一个字段的串联替换任何字符串

计算在MongoDB中另一个字段上分组的文档中某个字段中的字符串实例数吗?

mongodb聚合添加从另一个字段派生的字段

当一个字符串与另一个字符串匹配时,如何创建条件总和以加数字?

如何替换连接到另一个字符串的字符串?

从字节数组转换为字符串并与另一个字符串进行比较(java)

连接到一个字符串列表,另一个字符串

将一个字符串连接到另一个字符串中

Python / Pandas:如果行中的另一个字段包含字符串中的条件,则更新同一行中的字段

PySpark-如何根据条件将0的字符串前缀连接到另一个字符串列

Queryset:将一个字段与同一模型的另一个字段的子字符串进行比较

使用 Regex 搜索字符串,除非它先找到另一个字符串

优化基于另一个字段从一个字段中提取子字符串的循环