mongoose의 많은 부분을 업데이트합니다.
아주 간단한 사건이 있습니다.매일 자정마다 컬렉션을 업데이트합니다.사용중node-schedule
:
schedule.scheduleJob('0 0 * * *', () => {
Users.updateMany();
});
제가 원하는 것은 제 컬렉션에 있는 모든 문서를 반복하는 것입니다.Users
) 그리고 나서 만약User.created
이라false
로 바꾸고 싶습니다.true
.
자바스크립트에서는 다음과 같습니다.
for (let user in Users) {
if (user.created === false) {
user.created = true;
}
}
몽구스에서 하는 방법?감사합니다!
편집: 스토리는 매우 간단합니다. 몽구스를 사용하여 DB의 모든 요소에 대해 반복하고 반복된 요소에 필드 "생성" === false가 있으면 true로 변경합니다.
mongodb 방법을 사용하여 여러 문서를 업데이트할 수 있습니다.
단순 쿼리는 다음과 같습니다.
db.collection.updateMany(filter, update, options)
업데이트에 대한 자세한 내용은 여기를 참조하십시오.
요구 사항에 따라 업데이트 코드는 다음과 같습니다.
User.updateMany({"created": false}, {"$set":{"created": true}});
여기서는 $set을 사용해야 합니다. 왜냐하면 생성된 값을 true에서 false로 변경하고 싶기 때문입니다.참고로.전체 문서를 변경하려면 $set을 사용할 필요가 없습니다.
먼저 업데이트할 문서를 찾으려면 쿼리가 필요합니다.이것은 단순한 것입니다.
{"created": false}
그런 다음 mongo에게 해당 문서를 업데이트하는 방법을 알려주는 업데이트 쿼리가 필요합니다.
{"$set":{"created": true}}
다음을 사용해야 합니다.$set
변경할 필드를 지정하는 연산자입니다. 그렇지 않으면 전체 문서를 덮어씁니다.마지막으로 이러한 구성 요소를 추가 매개 변수와 함께 단일 mongo 호출로 결합하여 mongo에 여러 문서를 수정할 것임을 알릴 수 있습니다.
User.update({"created": false}, {"$set":{"created": true}}, {"multi": true}, (err, writeResult) => {});
Mongoose는 MongoDB의 문서에서만 이 모든 정보를 찾을 수 있도록 Mongo API를 긴밀하게 복제하려고 합니다. https://docs.mongodb.com/manual/reference/method/db.collection.update/
언급URL : https://stackoverflow.com/questions/54992810/update-many-in-mongoose
'itsource' 카테고리의 다른 글
Angular-cli 프로젝트에 부트스트랩을 추가하는 방법 (0) | 2023.05.07 |
---|---|
푸시되지 않은 깃 커밋 제거 (0) | 2023.05.07 |
라이브러리 추가/J이클립스 안드로이드 프로젝트의 AR (0) | 2023.05.07 |
회사 이름은 어디에 설정합니까? (0) | 2023.05.07 |
특정 디렉토리에 직접 ssh할 수 있는 방법은 무엇입니까? (0) | 2023.05.07 |