如何在mongodb中获取包含某些(字符串)值的集合的所有键

Posted

技术标签:

【中文标题】如何在mongodb中获取包含某些(字符串)值的集合的所有键【英文标题】:How to get all keys of collection that contains certain(String) value in mongodb 【发布时间】:2021-04-19 10:28:00 【问题描述】:

假设我有一个集合,即 A.

我想获取此集合中所有具有特定值的键,即“hello”

   
      "a": "its me hello",
      "b": "it does not have value",
      "c": "It has hello"
   

在这种情况下,我想查询返回 a 和 c 键。其中包含字符串“hello”。

有什么办法吗?

或者在 Spring Boot 中有什么方法可以做到这一点?

【问题讨论】:

每个对象中的字段名和字段数是固定的吗? 两者都可以。有时固定。有时无法修复。 【参考方案1】:

您可以通过使用objectToArray 重塑数据源中的数据来做到这一点

Play

db.collection.aggregate([
  
    "$project": 
      "data": 
        "$objectToArray": "$$ROOT"
      
    
  ,
  
    $unwind: "$data"
  ,
  
    "$match": 
      "data.v": 
        $regex: "hello"
      
    
  
])

又一个进阶版here 它将数据重新整形

db.collection.aggregate([
  
    "$project": 
      "data": 
        "$objectToArray": "$$ROOT"
      
    
  ,
  
    $unwind: "$data"
  ,
  
    "$match": 
      "data.v": 
        $regex: "hello"
      
    
  ,
  
    $group: //Grouping back and restructuring the data so that objectToArray will bring the original format easily.
      "_id": "$_id",
      data: 
        "$addToSet": 
          k: "$data.k",
          v: "$data.v"
        
      
    
  ,
  
    "$project": 
      "data": 
        "$arrayToObject": "$data"
      
    
  
])

参考arrayToObjectobjectToArray的文档,然后参考$regex

【讨论】:

如果你能帮助我。我如何在 Spring Boot 中使用它。这将非常有帮助。 不幸的是,我不是引导方面的专家。如果您尝试使用 spring-boot 发布问题,任何人都可以在这里提供帮助。

以上是关于如何在mongodb中获取包含某些(字符串)值的集合的所有键的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB:匹配字符串字段中的多个值

如何使用Python搜索字典值是不是包含某些字符串

如何在 mongodb 中查找包含 NaN 值的字段的 $avg 和 $sum?

MongoDB:获取具有两个值的不同组合的最新文档

如果Set包含具有某些字符串值的对象,如何检入java?

使用Spring-Integration获取具有某些字段(投影)的mongodb文档(仅限注释)