복붙노트

[MONGODB] 내가 어떻게하여 MongoDB에서 배열의 상단에 값을 추가하는 방법은 무엇입니까?

MONGODB

내가 어떻게하여 MongoDB에서 배열의 상단에 값을 추가하는 방법은 무엇입니까?

내가 어떻게하여 MongoDB에서 배열의 상단에 값을 추가하는 방법은 무엇입니까?

난 내 몽고 컬렉션에서이 문서가 있다고 가정 :

{ "colors" : [ "red", "green", "blue" ] }

내가 어떻게 목록의 전면에 "노란색"추가합니까?

때 내가 할 :

{$push:{colors:"yellow"}}

나는이를 얻을 것입니다 :

{ "colors" : [ "red", "green", "blue", "yellow" ] }

나는이 원하는 :

{ "colors" : [ "yellow", "red", "green", "blue"] }

사전에 감사합니다!

해결법

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

    1.마지막에 "푸시"인서트 반면 어레이의 앞에 "취소]"데이터를 삽입 ... 예를 들면 자바 스크립트 :

    마지막에 "푸시"인서트 반면 어레이의 앞에 "취소]"데이터를 삽입 ... 예를 들면 자바 스크립트 :

    > a = ['red','green','blue']
    [ "red", "green", "blue" ]
    > a.unshift("yellow")
    4
    > a
    [ "yellow", "red", "green", "blue" ]
    

    그러나 불행하게도이 원자 동작과 몽고의 API를 지원하지 않습니다 :

    http://www.mongodb.org/display/DOCS/Updating

    그냥 "푸시"를 지원합니다

    배열은 얼마나 큰?

    당신은 에테르 몽고의 배열은 항상 역에 저장, 사용 푸시되어 있다고 가정 수, 또는 당신은 배열을-읽어 취소]로 수정 한 다음 (원자 생각하지 않을 것이다) 다시 저장할 수

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

    2.이 새로운 사람을 위해 사용될 수 MongoDB가 2.6+ 지원 $ 위치 작업자는 원하는 효과를 달성했다. 운영자 수단의 일을 원자 적으로 수행 할 수있는 $ 위치 - 이점은 여기에 당신이 당신의 전체 문서의 배열을 반환 로컬과 저장을 업데이트 할 필요가 없다는 것.

    이 새로운 사람을 위해 사용될 수 MongoDB가 2.6+ 지원 $ 위치 작업자는 원하는 효과를 달성했다. 운영자 수단의 일을 원자 적으로 수행 할 수있는 $ 위치 - 이점은 여기에 당신이 당신의 전체 문서의 배열을 반환 로컬과 저장을 업데이트 할 필요가 없다는 것.

    당신은 $ 각과 함께 사용합니다 :

    $push: { colors: { $each: ['yellow'], $position: 0 } }
    
  3. from https://stackoverflow.com/questions/7936019/how-do-i-add-a-value-to-the-top-of-an-array-in-mongodb by cc-by-sa and MIT license