[MONGODB] 어떻게 MongoDB의 하나 제대로 증가 많은 날짜는 무엇입니까?
MONGODB어떻게 MongoDB의 하나 제대로 증가 많은 날짜는 무엇입니까?
특히 강력한 자바 스크립트 사람이없는, 나는 몽고의 Date 객체를 많이 업데이트하려고 약간의 문제가 있어요.
$ INC 아직 날짜 개체에 구현되어 있지 않은 것 같다. 그래서 시도하고 하루 날짜의 무리 범프, 나는 (같은) 떠들썩한 파티를 통해 몽고 myScript.js에서이 스크립트를 호출 :
conn = new Mongo();
db = conn.getDB('myDatabase');
var incrementDates = function() {
db.blah.find(myQuery).forEach(function(doc) {
db.blah.update(
{ _id : doc._id
, my_date : { $exists : true }
}
, { $set : { my_date : new Date(doc.my_date.getTime() + 86400000) }}
);
});
}
incrementDates();
기본적인 아이디어는 MongoDB의 쉘에서 충분히 잘 작동하는 것 같다 :
> var doc = db.blah.findOne(myQuery)
> doc.my_date
ISODate("1962-11-02T23:00:00Z")
> new Date(doc.my_date.getTime() + 86400000);
ISODate("1962-11-03T23:00:00Z")
하지만 너무 잘 스크립트 :
TypeError: doc.my_date has no properties
난 내 업데이 트에서 쿼리가 my_date가 존재하는 문서를 반환해야하더라도, 널 어딘가에서 다음 getTime 전화를 시도하고 있음을 가져 그래서.
여기에 무슨 일이 일어나고 있는지에 관해서는 어떤 아이디어? 더 중요한 것은이를 할 수있는 더 좋은 방법은 무엇입니까?
해결법
-
==============================
1.문제는 내 $가 잘못된 위치에 (두 번째 모습에, 분명히) 쿼리가 존재한다는 것입니다. 문서 my_date을 포함하지 않았다, 확실히 충분히, 그 반환되고 있었다.
문제는 내 $가 잘못된 위치에 (두 번째 모습에, 분명히) 쿼리가 존재한다는 것입니다. 문서 my_date을 포함하지 않았다, 확실히 충분히, 그 반환되고 있었다.
여기에 예상대로 작동하는 최대 패치 기능입니다.
var incrementDates = function() { db.blah.find({ ... , my_date : { $exists : true } ).forEach(function(doc) { db.blah.update( { _id : doc._id } , { $set : { my_date : new Date(doc.my_date.getTime() + 86400000) }} ); }); }
from https://stackoverflow.com/questions/18759375/how-does-one-properly-increment-many-dates-in-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 모음을 지정하지 않고 MongoDB의에서 문서를 가져 오기 (0) | 2019.12.19 |
---|---|
[MONGODB] 몽고 통합 프레임 워크의 특정한 배열 요소로 그룹화 (0) | 2019.12.19 |
[MONGODB] 몽구스 -에 의해 : 11000 E11000 중복 키 에러 인덱스 발생? (0) | 2019.12.19 |
[MONGODB] findOneAndUpdate에서 반환하는 필드를 선택 몽구스 (0) | 2019.12.19 |
[MONGODB] 몽고 결과에서 _id 제거 (0) | 2019.12.19 |