당신은 append 대신 mongo $push prepend를 가질 수 있습니까?
mongo $push를 할 때 끝에 추가하는 것보다 세트 시작 부분에 push add를 하고 싶습니다.
요소를 마지막이 아닌 첫 번째로 추가하는 아토믹 푸시 업데이트가 가능합니까?
2014년 업데이트: 네, 할 수 있습니다.
MongoDB v2.5.3 이후에는 새로운 버전이 있습니다.$position
연산자를 함께 포함할 수 있습니다.$each
당신의 일부로서의 연산자.$push
배열에서 값을 삽입할 위치를 지정하는 쿼리입니다.
다음은 docs 페이지에서 배열 인덱스 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
mongo v2.2에서 테스트한 $set for prepend와 함께 음수 인덱스 사용:
> 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 ] }
며칠 전에도 비슷한 질문이 있었습니다.유감스럽게도 간단한 대답은 "아니오"이지만 이 기능에 대한 공개 요청이 있습니다.
https://jira.mongodb.org/browse/SERVER-2191 - "어레이 전면에 $1800 추가"
다른 스레드에는 "MongoDB 어레이를 스택으로 사용" - MongoDB 어레이를 스택으로 사용"이라는 몇 가지 정보와 해결 방법이 있습니다.
위의 내용이 유용하고 허용 가능한 해결 방법을 찾는 데 도움이 되기를 바랍니다.
언급URL : https://stackoverflow.com/questions/10131957/can-you-have-mongo-push-prepend-instead-of-append
'IT' 카테고리의 다른 글
사용자 또는 관리자가 응용프로그램 사용에 동의하지 않았습니다 - 이 사용자 및 리소스에 대한 대화형 권한 부여 요청을 보냅니다. (0) | 2023.05.13 |
---|---|
각도 - 모든 요청에 대한 헤더 설정 (0) | 2023.05.13 |
UITableViewStylePlain을 사용하여 UITableView에서 부동 헤더를 비활성화할 수 있습니까? (0) | 2023.05.13 |
ASP에 대한 그리드 컨트롤.NET MVC? (0) | 2023.05.13 |
텍스트 문자열 내에서 텍스트를 추출하는 방법 (0) | 2023.05.13 |