mongodb - 按字符串数组过滤集合包含“”

Posted

技术标签:

【中文标题】mongodb - 按字符串数组过滤集合包含“”【英文标题】:mongodb - filter collection by string array contains "" 【发布时间】:2021-01-23 17:58:36 【问题描述】:

对于下面的文档,我想写mongodb查询来得到结果。

[
        "id": "1",
        "class": "class1",
        "value": "xyz"
    , 
        "id": "2",
        "class": "class2",
        "value": "abc"
    , 
        "id": "3",
        "class": "class3",
        "value": "123"
    , 
        "id": "4",
        "class": "class4"
    , 
        "id": "5",
        "class": "class5",
        "value": ""
    
]

搜索参数是一个值数组 - ["abc", "xyz", ""],这是 去看看属性“值” 输出应该在下面,在这种情况下,搜索数组 "" 中的第三项指向具有 "id" - 4 和 5 的集合:

[
        "id": "1",
        "class": "class1",
        "value": "xyz"
    , 
        "id": "2",
        "class": "class2",
        "value": "abc"
    , 
        "id": "4",
        "class": "class4"
    , 
        "id": "5",
        "class": "class5",
        "value": ""
    
]

请协助提供mongodb查询得到这样的结果

【问题讨论】:

【参考方案1】:

只要你有空字符串,你就可以在数组中添加null,像这样,

db.collection.find(
  value: 
    $in: ["abc", "xyz", "", null]
  
)

【讨论】:

以上是关于mongodb - 按字符串数组过滤集合包含“”的主要内容,如果未能解决你的问题,请参考以下文章

在 Mongoose/MongoDB 的文档中过滤数组、子文档、数组、文档

如何匹配 MongoDB 中的子文档数组?

使用 MongoDB 中的文档属性过滤器获取嵌入数组中的扁平文档数组

如何根据MongoDB中文档字段中的每个数组项过滤集合

如何匹配MongoDB中的子文档数组?

MongoDB计数按数组元素分组的数组中的匹配字符串