【问题标题】:How to find if any field includes a specific value如何查找任何字段是否包含特定值
【发布时间】:2020-12-16 20:33:58
【问题描述】:

我有一个对象数组,我想查找这些对象中是否有包含特定值的字段。

我所做的查询是在特定字段中搜索:

ExampleModel.find({
  $expr: {
    $in: ['myString', "$names"]
  }
})

我想搜索是否有任何字段包含“myString”,但我在谷歌中没有找到任何答案。 有什么建议吗?

【问题讨论】:

  • 您可以尝试聚合数组运算符$filter$regexMatch。如果您使用的是 MongoDB v4.4,那么您可以使用$function
  • 一直在尝试搜索 $filter 和 $regexMatch,我发现我需要为它定义一个特定的字段。有什么办法可以帮助我如何做到这一点,以便我可以搜索所有字段的值?

标签: mongodb mongoose


【解决方案1】:

使用$objectToArray 转置文档,您可以对v 字段进行过滤:

db.ExampleModel.aggregate([
   { $addFields: { data: { $objectToArray: "$$ROOT" } } },
   { $match: { "data.v": "myString" } },
   { $unset: "data" }
])

注意,这不适用于嵌入对象,对于字段的第一级应该没问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-02
    • 2020-05-24
    • 2015-09-03
    • 2011-04-25
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多