#mongodb #spring-boot #mongodb-query
#mongodb #spring-boot #mongodb-запрос
Вопрос:
Предположим, у меня есть коллекция, т.е. A.
Я хочу получить все ключи к этой коллекции, которые имеют определенное значение, т.е. «привет»
{
"a": "its me hello",
"b": "it does not have value",
"c": "It has hello"
}
В этом случае я хочу запросить возврат ключей a и c. Который содержит строку «привет».
Есть ли какой-нибудь способ сделать это?
Или любой способ сделать это в spring boot?
Комментарии:
1. являются ли имя поля и номер поля в каждом объекте фиксированными?
2. Это может быть и то, и другое. Иногда исправлено. Иногда это невозможно исправить.
Ответ №1:
Вы можете сделать это, изменив данные в источнике данных с помощью 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"
}
}
}
])
Обратитесь к документации arrayToObject
и objectToArray
, затем $regex
Комментарии:
1. Если вы можете мне помочь. как я могу использовать его в весенней загрузке. Это будет очень полезно.
2. К сожалению, я не такой эксперт в загрузке. Если вы попытаетесь отправить вопрос с помощью spring-boot, любой может помочь здесь.