내가 A라는 컬렉션이 있다고 가정합니다.
특정 값 즉 "hello"를 가진이 컬렉션의 모든 키를 가져오고 싶습니다.
{
"a": "its me hello",
"b": "it does not have value",
"c": "It has hello"
}
이 경우 a 및 c 키 를 반환하도록 쿼리하고 싶습니다 . "hello"문자열을 포함합니다.
그렇게 할 수있는 방법이 있습니까?
아니면 봄 부팅에서 할 방법이 있습니까?
다음을 사용하여 데이터 소스의 데이터를 재구성하여이를 수행 할 수 있습니다. 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
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다