U kunt dit doen door de gegevens in de gegevensbron opnieuw vorm te geven met behulp van objectToArray
db.collection.aggregate([
{
"$project": {
"data": {
"$objectToArray": "$$ROOT"
}
}
},
{
$unwind: "$data"
},
{
"$match": {
"data.v": {
$regex: "hello"
}
}
}
])
Een andere geavanceerde versie hier Het hervormt de gegevens terug
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"
}
}
}
])
Raadpleeg de documentatie van arrayToObject
en objectToArray
, dan $regex