如何在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"
])
参考arrayToObject
和objectToArray
的文档,然后参考$regex
【讨论】:
如果你能帮助我。我如何在 Spring Boot 中使用它。这将非常有帮助。 不幸的是,我不是引导方面的专家。如果您尝试使用 spring-boot 发布问题,任何人都可以在这里提供帮助。以上是关于如何在mongodb中获取包含某些(字符串)值的集合的所有键的主要内容,如果未能解决你的问题,请参考以下文章