[MONGODB] 하나의 호출로 여러 MongoDB의 문서를 작성하고 업데이트
MONGODB하나의 호출로 여러 MongoDB의 문서를 작성하고 업데이트
이제 내가 그렇게 같은 MongoDB의 수집을 가정 해 봅시다 :
[
{someId: 1, someProp: prop1, isOpen: true},
{someId: 2, someProp: prop1, isOpen: true},
{someId: 3, someProp: prop1, isOpen: true},
{someId: 4, someProp: prop1, isOpen: true},
]
나는 객체의 배열로의 호출을 만들고 싶어하지만, 이러한 개체 중 일부는 새로운 것, 일부는 기존 문서를 대체해야합니다.
그래서 이렇게 내 배열 외모를 가정 해 봅시다 :
[
{someId: 1, someProp: prop1, isOpen: true},
{someId: 2, someProp: prop1, isOpen: true},
{someId: 5, someProp: prop1, isOpen: true},
{someId: 6, someProp: prop1, isOpen: true},
]
어떻게 다음을 수행하는 MongoDB의 쿼리를 작성하려면 어떻게해야합니까.
someId 내 두 번째 배열에서 개체를 일치하는 경우, 단지 false로 ISOPEN을 변경합니다. someId는 물건을 일치하지 않는 경우 수집에 삽입.
그래서 난 내 쿼리를 실행 한 후 내가 끝낼 것입니다 :
[
{someId: 1, someProp: prop1, isOpen: false},
{someId: 2, someProp: prop1, isOpen: false},
{someId: 3, someProp: prop1, isOpen: true},
{someId: 4, someProp: prop1, isOpen: true},
{someId: 5, someProp: prop1, isOpen: true},
{someId: 6, someProp: prop1, isOpen: true},
]
그것은 foreach는 () 그냥 사용을 호출하는 것이 좋습니다 :
db.books.update(
{ item: "ZZZ135" },
{
item: "ZZZ135",
stock: 5,
tags: [ "database" ]
},
{ upsert: true }
)
... 루프에서? 아마 아닙니다. 즉, DB를 여러 번 호출을 의미 할 것입니다. 그 일을보다 효율적인 방법이 있나요?
해결법
-
==============================
1.기본적으로 당신은 upsert와 bulkWrite 작업을해야합니다
기본적으로 당신은 upsert와 bulkWrite 작업을해야합니다
const array = [ { someId: 1, someProp: prop1, isOpen: true }, { someId: 2, someProp: prop1, isOpen: true }, { someId: 5, someProp: prop1, isOpen: true }, { someId: 6, someProp: prop1, isOpen: true } ] Model.bulkWrite( array.map((data) => ({ updateOne: { filter: { someId: data.someId }, update: { $set: { isOpen: false, someProp: data.someProp } }, upsert: true } }) ) })
당신에게 출력을 줄 것이다
[ { someId: 1, someProp: prop1, isOpen: false }, { someId: 2, someProp: prop1, isOpen: false }, { someId: 3, someProp: prop1, isOpen: true }, { someId: 4, someProp: prop1, isOpen: true }, { someId: 5, someProp: prop1, isOpen: true }, { someId: 6, someProp: prop1, isOpen: true } ]
from https://stackoverflow.com/questions/51882718/create-and-update-multiple-mongodb-documents-in-one-call by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 무엇 수집 몽구스에 물건을 넣어합니까? (0) | 2019.12.20 |
---|---|
[MONGODB] MongoDB의 쿼리는 배열의 특정 위치에 항목을 기준으로 (0) | 2019.12.20 |
[MONGODB] 몽고 집계 : $ 그룹과 계산에 대한 객체 $ 프로젝트 배열 (0) | 2019.12.20 |
[MONGODB] 집계 작동하지 _id 사용하여 찾기 [중복] (0) | 2019.12.20 |
[MONGODB] Golang는 빈 객체를 받고 MGO (0) | 2019.12.20 |