mongodb의 배열에서 찾은 요소 만 표시

인간

이 컬렉션이 있습니다.

/* 1 */
{
    "_id" : ObjectId("553e316e39108e802a1edeb9"),
    "coleccion" : "aplicaciones",
    "nombre" : "otra aplicacionn",
    "descripcion" : "w aplicacion",
    "tipo" : "privada",
    "campoId" : [ 
        {
            "id" : "1430230303",
            "id_campo" : "553bffed39108e346ccff7ab",
            "orden" : "25",
            "obligatorio" : "0"
        }, 
        {
            "id" : "1430233750",
            "id_campo" : "553bffca39108eb163cff7aa"
        }, 
        {
            "id" : "1430233753",
            "id_campo" : "553c001139108ebc63cff7aa",
            "orden" : "47",
            "estado" : "1"
        }
    ]
}

/* 2 */
{
    "_id" : ObjectId("553ce99a39108e2b7c1edeb9"),
    "coleccion" : "aplicaciones",
    "nombre" : "Mascotas",
    "descripcion" : "Censo de mascotas",
    "tipo" : "publica",
    "campoId" : [ 
        {
            "id" : "1430230465",
            "id_campo" : "553bffed39108e346ccff7ab",
            "orden" : "19",
            "obligatorio" : "0"
        }, 
        {
            "id" : "1430231597",
            "id_campo" : "553bffca39108eb163cff7aa",
            "estado" : "1",
            "obligatorio" : "1"
        }, 
        {
            "id" : "1430419469",
            "id_campo" : "554277d839108e6a5835c3e0",
            "orden" : "39",
            "obligatorio" : "0"
        }, 
        {
            "id" : "1430423643",
            "id_campo" : "553c001139108ebc63cff7aa",
            "orden" : "64",
            "obligatorio" : "1"
        }
    ]
}

그리고 다음과 같이 배열 내에서 특정 요소를 찾고 싶습니다.

"obligatorio" : "1"

필드 검색 :

"id" : "1430231597"

난 노력 했어:

db.getCollection('aplicaciones').find({campoId:{$elemMatch:{"id":"1430231597"}}},{"campoId.$.obligatorio":1,_id:0})

그러나 나는 얻는다

{
"campoId" : [ 
    {
        "id" : "1430231597",
        "id_campo" : "553bffca39108eb163cff7aa",
        "estado" : "1",
        "obligatorio" : "1"
    }
]

}

결과가 "obligatiorio"필드의 값이되도록 만드는 방법은 무엇입니까?

스티 베인

"aggregation"을 사용하여이를 수행 할 수 있습니다 .

db.aplicaciones.aggregate(
    [   
        { "$match": { "campoId.id": "1430231597" }},
        { "$unwind": "$campoId" }, 
        { "$match": { "campoId.id":"1430231597" }}, 
        { "$project": { "obligatorio": "$campoId.obligatorio", "_id":0 }}
    ]
)

그러나 가장 좋은 방법은을 사용 $setDifference하고 $map운영자가 있기 때문에 $unwind될 수있다 "비싸다"

db.aplicaciones.aggregate([ 
    { "$match": { "campoId.obligatorio": "1" }}, 
    { "$project": { "campoId": { 
        "$setDifference": [ 
            { "$map": { 
                "input": "$campoId",
                "as": "cp", 
                "in": { 
                    "$cond": [{ 
                        "$and": [ 
                            { "$eq": ["$$cp.obligatorio", "1" ]},
                            { "$eq": [ "$$cp.id", "1430231597" ]}  
                        ]}, 
                        "$$cp", 
                        false
                    ]
                }}
            }, 
            [false]
       ]}
    }}
])

결과 :

{
        "_id" : ObjectId("553ce99a39108e2b7c1edeb9"),
        "campoId" : [
                {
                        "id" : "1430231597",
                        "id_campo" : "553bffca39108eb163cff7aa",
                        "estado" : "1",
                        "obligatorio" : "1"
                }
        ]
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

내 PHP 배열은 하나의 요소 만 표시합니다.

분류에서Dev

백만 요소의 배열에서 유일한 고유 요소 찾기

분류에서Dev

MongoDB에서 배열 요소의 시작과 끝에서 필드에서 두 개의 하위 문자열을 찾는 방법은 무엇입니까?

분류에서Dev

Java에서 요소의 특정 문자 위치를 기반으로 배열에서 String 요소를 찾고 표시하는 방법은 무엇입니까?

분류에서Dev

mongodb에서 배열의 요소를 단일 배열로 푸시

분류에서Dev

MongoDB : 중첩 된 배열에서 특정 값을 찾는 방법, 찾은 경우 해당 배열 만 표시하는 방법은 무엇입니까?

분류에서Dev

mongodb 배열에서 요소 찾기

분류에서Dev

배열에서 사용 가능한 요소 만 표시하는 방법은 무엇입니까?

분류에서Dev

다른 배열에있는 경우 배열 요소 만 표시

분류에서Dev

2D 배열에서 배열의 요소를 찾기 위해 for 루프를 만들 수 없습니다.

분류에서Dev

struct 요소의 중첩 배열에서 Spark DataFrame을 만드시겠습니까?

분류에서Dev

두 팬더 시리즈 일치 : 다른 시리즈의 한 시리즈에서 문자열 요소를 찾은 다음 새 열을 만드는 방법

분류에서Dev

디버그 모드의 배열은 처음 14 개 요소 만 표시하고 나머지는 표시 (?) 물음표입니다.

분류에서Dev

HTML에서 foreach 배열의 첫 번째 요소 표시

분류에서Dev

angular 대 angularjs의 관점에서 배열 요소 표시

분류에서Dev

자바. 2D 배열에서 하나의 요소 표시

분류에서Dev

배열 _ JavaScript의 요소 조합에서 새 배열 만들기

분류에서Dev

다른 배열의 요소에서 배열 만들기

분류에서Dev

배열에서 counts 요소의 배열 만들기

분류에서Dev

배열을 세션 변수로 전달하고 별도의 PHP 파일에서 호출하면 마지막 배열 요소 만 표시됩니다

분류에서Dev

LINQ to MongoDb를 사용하여 문서의 다른 배열 내부에있는 배열의 요소를 '찾기 및 푸시'하는 방법

분류에서Dev

Gatsby .map 함수에서 하나의 요소 만 표시하는 방법은 무엇입니까?

분류에서Dev

AndroidSlidingUpPanelLayout은 다시 축소 한 후에 만 List 요소를 표시합니다.

분류에서Dev

배열 배열에서 배열 요소의 임의 표시를 생성 하시겠습니까?

분류에서Dev

Recycle View에는 1 개의 요소 만 표시됩니다.

분류에서Dev

2 개의 http 요청 요소에서 새 배열 만들기

분류에서Dev

배열에서 가장 어린 요소 만 찾기

분류에서Dev

Scala에서 배열 요소를 얻는 것은 명시 적 적용 방법에서만 작동합니다.

분류에서Dev

JavaScript의 모든 요소 대신 마지막 요소 만 배열로 표시되는 이유

Related 관련 기사

  1. 1

    내 PHP 배열은 하나의 요소 만 표시합니다.

  2. 2

    백만 요소의 배열에서 유일한 고유 요소 찾기

  3. 3

    MongoDB에서 배열 요소의 시작과 끝에서 필드에서 두 개의 하위 문자열을 찾는 방법은 무엇입니까?

  4. 4

    Java에서 요소의 특정 문자 위치를 기반으로 배열에서 String 요소를 찾고 표시하는 방법은 무엇입니까?

  5. 5

    mongodb에서 배열의 요소를 단일 배열로 푸시

  6. 6

    MongoDB : 중첩 된 배열에서 특정 값을 찾는 방법, 찾은 경우 해당 배열 만 표시하는 방법은 무엇입니까?

  7. 7

    mongodb 배열에서 요소 찾기

  8. 8

    배열에서 사용 가능한 요소 만 표시하는 방법은 무엇입니까?

  9. 9

    다른 배열에있는 경우 배열 요소 만 표시

  10. 10

    2D 배열에서 배열의 요소를 찾기 위해 for 루프를 만들 수 없습니다.

  11. 11

    struct 요소의 중첩 배열에서 Spark DataFrame을 만드시겠습니까?

  12. 12

    두 팬더 시리즈 일치 : 다른 시리즈의 한 시리즈에서 문자열 요소를 찾은 다음 새 열을 만드는 방법

  13. 13

    디버그 모드의 배열은 처음 14 개 요소 만 표시하고 나머지는 표시 (?) 물음표입니다.

  14. 14

    HTML에서 foreach 배열의 첫 번째 요소 표시

  15. 15

    angular 대 angularjs의 관점에서 배열 요소 표시

  16. 16

    자바. 2D 배열에서 하나의 요소 표시

  17. 17

    배열 _ JavaScript의 요소 조합에서 새 배열 만들기

  18. 18

    다른 배열의 요소에서 배열 만들기

  19. 19

    배열에서 counts 요소의 배열 만들기

  20. 20

    배열을 세션 변수로 전달하고 별도의 PHP 파일에서 호출하면 마지막 배열 요소 만 표시됩니다

  21. 21

    LINQ to MongoDb를 사용하여 문서의 다른 배열 내부에있는 배열의 요소를 '찾기 및 푸시'하는 방법

  22. 22

    Gatsby .map 함수에서 하나의 요소 만 표시하는 방법은 무엇입니까?

  23. 23

    AndroidSlidingUpPanelLayout은 다시 축소 한 후에 만 List 요소를 표시합니다.

  24. 24

    배열 배열에서 배열 요소의 임의 표시를 생성 하시겠습니까?

  25. 25

    Recycle View에는 1 개의 요소 만 표시됩니다.

  26. 26

    2 개의 http 요청 요소에서 새 배열 만들기

  27. 27

    배열에서 가장 어린 요소 만 찾기

  28. 28

    Scala에서 배열 요소를 얻는 것은 명시 적 적용 방법에서만 작동합니다.

  29. 29

    JavaScript의 모든 요소 대신 마지막 요소 만 배열로 표시되는 이유

뜨겁다태그

보관