programing

MongoDB: 하위 문서 필드 값의 개별 목록을 가져오는 방법은 무엇입니까?

closeapi 2023. 6. 20. 21:38
반응형

MongoDB: 하위 문서 필드 값의 개별 목록을 가져오는 방법은 무엇입니까?

다음과 같은 문서를 수집하고 있다고 가정해 보겠습니다.

{
   "family": "Smith",
   "children": [
        {
            "child_name": "John"
        },
        {
            "child_name": "Anna"
        },
    ]
}

{
   "family": "Williams",
   "children": [
        {
            "child_name": "Anna"
        },
        {
            "child_name": "Kevin"
        },
    ]
}

이제 모든 가족에 걸쳐 다음과 같은 고유한 자식 이름 목록을 얻고 싶습니다.

[ "John", "Anna", "Kevin" ]

결과의 구조가 다를 수 있습니다.MongoDB에서 어떻게 그것을 달성합니까?간단한 것이어야 하는데 이해할 수가 없습니다.컬렉션에서 aggregate() 함수를 사용해 보았지만 구별되는() 함수를 적용하는 방법을 모르겠습니다.

다음을 수행할 수 있습니다.

db.collection.distinct("children.child_name");

이 경우 다음을 반환됩니다.

[ "John", "Anna", "Kevin" ]

도움말 집계 프레임워크 사용:

db.collection.aggregate([{$unwind:'$children'}, {$group:{_id:'$children.child_name'}}])

또는 더 많은 관심 ;) 이름의 빈도:

db.collection.aggregate([{$unwind:'$children'}, {$group:{_id:'$children.child_name', freq:{$sum:1}}}])

언급URL : https://stackoverflow.com/questions/16155266/mongodb-how-to-get-distinct-list-of-sub-document-field-values

반응형