2017-11-26 2 views
0

.updateMany (필터, 업데이트, 옵션)를 사용할 때. 모든 문서에 동적 필터 필드를 설정하려면 어떻게해야합니까?MongoDB updateMany, 동적 필터 필드

[ 
    { 
     time: 1, 
     data: [] 
    }, 
    { 
     time: 2, 
     data: [] 
    }, 
    { 
     time: 3, 
     data: [] 
    } 
] 

각각의 고유 한 타임 스탬프 :

는이 같은 문서의 배열을 가지고있다. 타임 스탬프가 이미있는 경우 해당 문서를 새 데이터로 업데이트해야하지만 시간이 없으면 새 문서를 만듭니다. 이 보인다

https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/

는하지만, .updateMany는()는 정적 필터 필드를 할 수 있습니다. 이

Candles.updateMany({time: 'someStaticTime'}, documents); 

처럼 나는 각 문서 별도의 전체를 반복하지 않고

Candles.updateMany({time: $currentInsertingDocument.time}, documents); 

같은이 가능 선호하면서 ??

+0

당신이 원하는 것을 명확히 할 수 있습니까? 나는 "시간이 이미 존재하면 문서가 업데이트되어야하고, 그렇지 않으면 새로운 시간을 만듭니다"라고 말하면서 모든 시간 필드를 새로운 타임 스탬프로 설정한다고 말하면서 그것을 읽습니다. –

+0

질문이 업데이트되었습니다. 그리고 맞습니다. 문서의 배열입니다. 인덱스 키는 고유 한 타임 스탬프입니다. 그래서 이미 존재하는 타임 스탬프가있는 문서가 오면, 그 문서는 업데이트되어야합니다. 그렇지 않으면 새로운 문서를 생성해야합니다. 그러나 동적 필드로 시간 필드를 필터링해야하고, 루핑하는 각 문서를 변경해야합니다 내부적으로 – DutchKevv

+1

'Bulk' API를 사용해야한다고 생각합니다 : https://docs.mongodb.com/manual/reference/method/Bulk.find.upsert/ – Michael

답변