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);
같은이 가능 선호하면서 ??
당신이 원하는 것을 명확히 할 수 있습니까? 나는 "시간이 이미 존재하면 문서가 업데이트되어야하고, 그렇지 않으면 새로운 시간을 만듭니다"라고 말하면서 모든 시간 필드를 새로운 타임 스탬프로 설정한다고 말하면서 그것을 읽습니다. –
질문이 업데이트되었습니다. 그리고 맞습니다. 문서의 배열입니다. 인덱스 키는 고유 한 타임 스탬프입니다. 그래서 이미 존재하는 타임 스탬프가있는 문서가 오면, 그 문서는 업데이트되어야합니다. 그렇지 않으면 새로운 문서를 생성해야합니다. 그러나 동적 필드로 시간 필드를 필터링해야하고, 루핑하는 각 문서를 변경해야합니다 내부적으로 – DutchKevv
'Bulk' API를 사용해야한다고 생각합니다 : https://docs.mongodb.com/manual/reference/method/Bulk.find.upsert/ – Michael