[MONGODB] 어떻게 MongoDB를 함께 배열의 순서를 변경하려면?
MONGODB어떻게 MongoDB를 함께 배열의 순서를 변경하려면?
I가 증가하고 MongoDB의 오브젝트의 배열의 요소의 위치를 감소 할 수 있어야한다.
나는 MongoDB의 API의 <업데이트> API 보았지만 나에게 그렇게 할 수 있도록 아무것도 찾을 수 없습니다.
나는 몽구스를 통해 findOneAndUpdate를 사용하려고하고 나는 아래로 이동하거나 시도하고 요소의 인덱스를 알고있다.
베이스 64 인코딩 된 이미지의 배열 항목의 예 :
{
images: [
"img1",
"img2",
"img3"
]
}
그리고 위 또는 아래로, 예를 들어, "IMG2"를 이동하고자하는 (그러나 갈 곳이 없기 때문에 "이미지"에 수까지 밀어해서는 안됩니다).
I가 "IMG2을"밀어 원하는 경우, 결과는 다음과 같습니다
{
images: [
"img2",
"img1",
"img3"
]
}
나는, 인덱스를 변경 교환, 또는 아래 / 위로 밀어를 통해이를 경우 문제가되지 않습니다.
해결법
-
==============================
1.마찬가지로 @ blakes 일곱 당신이 그것을 할 수있는 두 가지 방법이 말했다 :
마찬가지로 @ blakes 일곱 당신이 그것을 할 수있는 두 가지 방법이 말했다 :
, 잡아 업데이트하고 밀고
db.images.find({ _id: '' }, { images : 1 }) .then(function(img) { var tmpImg = img.images[0]; img.images[0] = img.images[1]; img.images[1] = tmpImg; db.images.update({ _id: img._id }, { $set: { images: img.images } }); })
직접 업데이트 (당신은 클라이언트에서 이미지를 가지고 인덱스를 알고있는 경우) $ 위치를 사용하여,
db.images.update({ _id: '' }, { $push: { images: { $each: ['img2'] }, $position: 0 } } } ) .then(function() { db.images.update({ _id: '' }, {$unset: {'images.2': 1}}) });
https://docs.mongodb.org/manual/reference/operator/update/position/
그러나, 나는 당신이 예를 들어 가상의 순서로 사용하여 이미지를 저장하는 방법을 재 설계해야한다고 생각 :
{ images: [ { base64: 'img1', order: 0, _id: 'img1' }, { base64: 'img2', order: 1, _id: 'img2' }, { base64: 'img3', order: 2, _id: 'img3' } ] }
이 방법, 당신은 단지 _id를 사용하여 업데이트하거나, 모든 IMG2의 순서를 변경 떨어 뜨리거나 이미지를 대체하여 전체 모음을 업데이트, 가상 순서 인덱스를 사용하여 이미지를 주문할 수 등
from https://stackoverflow.com/questions/35810951/how-to-change-order-of-array-with-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] NG는-경우가해야보다 더 많은 시간을 호출되는 (0) | 2019.12.27 |
---|---|
[MONGODB] JSON에 BSON 유형 ObjectId가 변환 (MongoDB의에서 보관) -Java (0) | 2019.12.27 |
[MONGODB] MongoDB를의 통합 프레임 워크 이동 평균? (0) | 2019.12.26 |
[MONGODB] MongoDB를 집계하여 문자열의 배열을 반환하는 방법 (0) | 2019.12.26 |
[MONGODB] 몽구스의 최대 값을 얻을 (0) | 2019.12.26 |