如何获取mongodb中包含特定(String)值的集合的所有键



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

我想得到这个集合的所有具有特定值的键;你好";

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

在这种情况下,我想查询以返回a和c键。它包含字符串";你好";。

有办法做到这一点吗?

或者有什么方法可以在春季靴中做到这一点?

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

播放

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

此处为另一个高级版本它将数据重塑为

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

最新更新