복붙노트

[MONGODB] MongoDB의 배열에서의 n 번째 원소를 받기

MONGODB

MongoDB의 배열에서의 n 번째 원소를 받기

MongoDB의 내 문서의 일부로서 나는 객체의 배열을 저장하고있다. 어떻게 예를 들어 배열의 4 요소를 조회 할 수 있습니다? 내가 원하지 않는 있도록 전체 배열 밖으로, 단지 4 요소를 얻을.

해결법

  1. ==============================

    1.$ 슬라이스를 사용합니다.

    $ 슬라이스를 사용합니다.

    db.foo.find({ bar : "xyz" } , { my_array : { $slice : [n , 1] } } )
    

    푸 컬렉션에있는 모든 문서들의 어레이 "my_array 배열"의 n 번째 원소를 검색하는 곳 바 = "XYZ".

    MongoDB를 문서의 일부 다른 예 :

    db.posts.find({}, {comments:{$slice: 5}}) // first 5 comments
    db.posts.find({}, {comments:{$slice: -5}}) // last 5 comments
    db.posts.find({}, {comments:{$slice: [20, 10]}}) // skip 20, limit 10
    db.posts.find({}, {comments:{$slice: [-20, 10]}}) // 20 from end, limit 10
    

    http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields : 당신은 여기에 읽을 수있는

  2. ==============================

    2.당신은 지정된 배열 인덱스의 요소를 반환하여 MongoDB 3.2의 새로운는 $ arrayElemAt 연산자를 사용할 수 있습니다.

    당신은 지정된 배열 인덱스의 요소를 반환하여 MongoDB 3.2의 새로운는 $ arrayElemAt 연산자를 사용할 수 있습니다.

    데모:

    바구니라는 이름의 컬렉션 문서를 포함하는 다음과 같이 :

    {
        "_id" : ObjectId("578f326f6db61a299a383c5a"),
        "fruits" : [
            "apple",
            "mango",
            "banana",
            "apricot",
            "cherry"
        ]
    }
    

    다음은 "과일"배열 인덱스 -2 (제 소자)의 요소를 리턴 질의.

    db.baskets.aggregate(
        [
            { "$project": { "matched": { "$arrayElemAt": [ "$fruits", 1 ] } } } 
        ] 
    )
    

    이는 생산

    { 
        "_id" : ObjectId("578f326f6db61a299a383c5a"), 
        "matched" : "mango" 
    }
    

    그리고 배열의 마지막 요소 앞에있는 요소를 쿼리 다음; 인덱스에 따라서 소자 -2

    db.baskets.aggregate(
        [
            { "$project": { "matched": { "$arrayElemAt": [ "$fruits", -2 ] } } } 
        ] 
    )
    

    이는 수율 :

    { 
        "_id" : ObjectId("578f326f6db61a299a383c5a"), 
        "matched" : "apricot" 
    }
    
  3. ==============================

    3.이 작업을 수행하는 또 다른 방법은 업데이트 배열 구문을 사용하는 것입니다. 여기서, contribs.1 값 ALGOL 58 갖도록 기여 어레이의 두 번째 요소를 설정 (갱신 구문 매뉴얼 페이지에서 발췌)

    이 작업을 수행하는 또 다른 방법은 업데이트 배열 구문을 사용하는 것입니다. 여기서, contribs.1 값 ALGOL 58 갖도록 기여 어레이의 두 번째 요소를 설정 (갱신 구문 매뉴얼 페이지에서 발췌)

    db.bios.update(
       { _id: 1 },
       { $set: { 'contribs.1': 'ALGOL 58' } }
    )
    
  4. from https://stackoverflow.com/questions/7223273/get-n-th-element-of-an-array-in-mongodb by cc-by-sa and MIT license