【问题标题】:MongoDB return where array contains at least one item from query arrayMongoDB返回其中数组包含查询数组中的至少一项
【发布时间】:2020-02-20 04:37:23
【问题描述】:

我有一个包含 tags 字段的记录的集合,类似于:

[
  {
    "title": "foo",
    "tags": [ "fizz", "buzz", "quz" ]
  }
]

我希望能够在数组中搜索这些,因此我可以搜索与传入的数组值中的至少一个匹配的记录,因此使用[ "fizz" ] 的查询将匹配,或者[ "fizz", "quz" ] 将匹配但@ 987654325@不会。

我试过$elemMatch,但这似乎只在查询数组中的所有元素与记录中的tags数组匹配时才返回记录。

【问题讨论】:

    标签: arrays mongodb


    【解决方案1】:

    $in 查询运算符应该可以满足您的需要:

    为了快速演示,我创建了一个包含多个数组变体的集合:

    [
      { arr: [ "a", "b", "c" ] },
      { arr: [ "b", "c", "d" ] },
      { arr: [ "c", "d", "e" ] },
      { arr: [ "d", "e", "f" ] }
    ]
    

    查询包含“a”或“b”的文档返回前2个:

    db.collection.find({ arr: { $in: [ "a", "b", ] } })
    

    Playground

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-10
      • 1970-01-01
      • 2019-10-20
      • 2019-12-09
      • 2016-05-06
      • 2016-03-24
      • 1970-01-01
      • 2021-10-02
      相关资源
      最近更新 更多