【问题标题】:MongoDB - How to find array which only contains the specified valueMongoDB - 如何查找仅包含指定值的数组
【发布时间】:2020-01-10 10:11:46
【问题描述】:

假设我有以下文件

segments
{
  "name":"S1",
},
{
  "name":"S2",
},
{
  "name":"S3",
}

和用户

users
{
  "id":1234.
  "segments":["S1","S2","S3"]
}
{
  "id":1235.
  "segments":["S1"]
}
{
  "id":1237.
  "segments":["S2"]
}
{
  "id":1236.
  "segments":["S1","S2"]
}

如果我执行 users.find({ "segments" : "S2" }),它会带来所有带有字段“S2”的文档。

我正在寻找的是,只有值 S2 的数组。 我正在寻找这个输出:

{
  "id":1237.
  "segments":["S2"]
}

因为它只有我正在寻找的 S2

【问题讨论】:

    标签: arrays mongodb search mongodb-query


    【解决方案1】:

    你可以使用$elemMatch投影

    db.collection.find({
      segments: ["S2"]
    })
    

    【讨论】:

    • 抱歉,我尝试了您的解决方案,但它也返回了那些包含“S2”以及其他集合的集合。 (即“S2”和“S1”)...感谢您的帮助
    • 很抱歉您可能错过了我的要求。我正在寻找的只是 ID 为 1237 的文档,因为它是唯一只有 S2 的文档。(只有一个元素)
    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2015-03-02
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    • 2014-12-16
    相关资源
    最近更新 更多