Supongamos que tengo una colección, es decir, A.
Quiero obtener todas las claves de esta colección que tengan un valor particular, es decir, "hola".
{ "a": "its me hello", "b": "it does not have value", "c": "It has hello" }En ese caso, quiero consultar para devolver las claves a y c . Que contiene la cadena "hola".
¿Hay alguna manera de hacerlo?
¿O alguna forma de hacerlo en Spring Boot?
Puede hacer esto remodelando los datos en la fuente de datos usando objectToArray
db.collection.aggregate([ { "$project": { "data": { "$objectToArray": "$$ROOT" } } }, { $unwind: "$data" }, { "$match": { "data.v": { $regex: "hello" } } } ])Otra versión avanzada aquí Le da nueva forma a los datos.
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" } } } ]) Consulte la documentación de arrayToObject y objectToArray , luego $regex