복붙노트

[MONGODB] 당신은 $ 푸시 앞에 추가하는 대신이 추가 인을 몽고 수 있습니까?

MONGODB

당신은 $ 푸시 앞에 추가하는 대신이 추가 인을 몽고 수 있습니까?

나는 내가 몽고의 $ 푸시를 수행 할 때 끝에 추가보다는 내 세트의 시작 부분에 푸시 추가를하고 싶습니다.

그것은 지난보다 먼저 아니라 같은 요소를 추가하는 원자 푸시 업데이트를 할 수 있습니까?

2014 업데이트 : 당신이 할 수있는 예.

해결법

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

    1.MongoDB의의 v2.5.3로, 당신은 당신이 값을 삽입 할 때의 배열의 위치를 ​​지정하여 $ 푸시 쿼리의 일환으로 $로 각 연산자를 함께 포함 할 수 있다는 새로운 $ 위치 연산자가있다.

    MongoDB의의 v2.5.3로, 당신은 당신이 값을 삽입 할 때의 배열의 위치를 ​​지정하여 $ 푸시 쿼리의 일환으로 $로 각 연산자를 함께 포함 할 수 있다는 새로운 $ 위치 연산자가있다.

    여기서 (2)의 배열 인덱스의 요소 (20, 30)을 추가 할 수있는 문서 페이지의 예이다 :

    db.students.update( { _id: 1 },
                        { $push: { scores: {
                                             $each: [ 20, 30 ],
                                             $position: 2
                                           }
                                 }
                        }
                      )
    

    참조 : http://docs.mongodb.org/master/reference/operator/update/position/#up._S_position

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

    2.몽고 버전 2.2에서 테스트 앞에 추가를위한 $ 세트, 부정적인 인덱스를 사용합니다 :

    몽고 버전 2.2에서 테스트 앞에 추가를위한 $ 세트, 부정적인 인덱스를 사용합니다 :

    > db.test.insert({'array': [4, 5, 6]})
    > db.test.find()
    { "_id" : ObjectId("513ad0f8afdfe1e6736e49eb"),
      "array" : [ 4, 5, 6 ] }
    
    //prepend 3
    > db.test.update({"_id" : ObjectId("513ad0f8afdfe1e6736e49eb")}, 
                     {'$set': {'array.-1':     3}})
    > db.test.find()
    { "_id" : ObjectId("513ad0f8afdfe1e6736e49eb"), 
      "array" : [ 3, 4, 5, 6 ] }
    
    //prepend 2
    > db.test.update({"_id" : ObjectId("513ad0f8afdfe1e6736e49eb")}, 
                     {'$set': {'array.-1':     2}})
    > db.test.find()
    { "_id" : ObjectId("513ad0f8afdfe1e6736e49eb"), 
      "array" : [ 2, 3, 4, 5, 6 ] }
    
    //prepend 1
    > db.test.update({"_id" : ObjectId("513ad0f8afdfe1e6736e49eb")}, 
                     {'$set': {'array.-1':     1}})
    > db.test.find()
    { "_id" : ObjectId("513ad0f8afdfe1e6736e49eb"), 
      "array" : [ 1, 2, 3, 4, 5, 6 ] }
    
  3. ==============================

    3.비슷한 질문이 몇 일 전에 질문을 받았다. 불행하게도, 짧은 대답은 "아니오"하지만,이 기능에 대한 개방 요구가있다. https://jira.mongodb.org/browse/SERVER-2191 - "배열의 전면에 $ 푸시 ()"

    비슷한 질문이 몇 일 전에 질문을 받았다. 불행하게도, 짧은 대답은 "아니오"하지만,이 기능에 대한 개방 요구가있다. https://jira.mongodb.org/browse/SERVER-2191 - "배열의 전면에 $ 푸시 ()"

    좀 더 많은 정보와 다른 스레드에 가능한 주위에 일이있다 "스택으로 사용 MongoDB를 배열"- 스택으로 사용 MongoDB의 배열

    희망 위의 유용하고 도움 당신은 허용 해결 방법 찾을 수 있습니다.

  4. from https://stackoverflow.com/questions/10131957/can-you-have-mongo-push-prepend-instead-of-append by cc-by-sa and MIT license