반응형
mongo 콘솔에서 날짜 필드를 업데이트하는 방법은 무엇입니까?
예를 들어 모든 레코드를 '2012-01-01'("time" : ISODate("2011-12-31T13:52:40Z")로 업데이트하고자 합니다.
db.test.update( { time : '2012-01-01' }, false, true )
반환 오류:
Assert failed : need an object
Error("Printing Stack Trace")@:0
()@shell/utils.js:35
("assert failed : need an object")@shell/utils.js:46
(false,"need an object")@shell/utils.js:54
([object Object],false,true)@shell/collection.js:189
@(shell):1
Wed Jan 11 17:52:35 uncaught exception: assert failed : need an object
새 항목을 생성해야 합니다.ISODate
다음과 같은 개체:
db.test.insert({"Time" : new ISODate("2012-01-10") });
이는 업데이트 및 쿼리 모두에 해당됩니다.쿼리 구문이 올바르지 않습니다. 이 구문은 다음과(와야 합니다.
db.test.update({ criteria }, { newObj }, upsert, multi);
예를 들어, 모든 개체를 업데이트하려면
db.test.update( {}, { $set : { "time" : new ISODate("2012-01-11T03:34:54Z") } }, true, true);
또한 이는 다음과 매우 다르다는 점에 유의하십시오.
db.test.update( {}, { "time" : new ISODate("2012-01-11T03:34:54Z") }, true, false);
기존 문서에 새 필드를 추가하거나 기존 필드를 업데이트하는 대신 후자가 오브젝트를 대체하기 때문입니다.이 예에서 마지막 매개 변수를 다음으로 변경했습니다.false
다중 업데이트는 다음과 함께만 작동하기 때문입니다.$
연산자
기존 날짜 필드(MySQL 형식 'yyyyy-mm-dd' f.e.에서 가져온)를 ISODate로 변환해야 하는 경우 다음 방법으로 문서를 루프할 수 있습니다.
/usr/bin/mongo yourdbname --eval "db.yourcollectionname.find().forEach(function(doc){doc.yourdatefield = new ISODate(doc.yourdatefield);db.yourcollectionname.save(doc)});"
ISO 날짜를 생성하여 이전 방식으로 이 작업을 수행할 수 있습니다.
db.test.update({_id : 1}, {
$set : {
"time" : new ISODate("your current date")
}
});
하지만 새로운 기능을 사용할 경우에Mongo 2.6
$currentDate를 사용하면 날짜를 현재 날짜로 매우 쉽게 업데이트할 수 있습니다.
db.test.update( { _id: 1 }, {
$currentDate: {
time: true,
},
})
언급URL : https://stackoverflow.com/questions/8821206/how-to-update-date-field-in-mongo-console
반응형
'IT' 카테고리의 다른 글
Azure에서 ASP.NET Core 웹 앱에 대한 SQL 연결 문자열 설정 (0) | 2023.05.18 |
---|---|
Django-DB-Migrations: 보류 중인 트리거 이벤트가 있기 때문에 TABLE을 변경할 수 없습니다. (0) | 2023.05.18 |
SQL에서 HAVING과 WHERE의 차이점은 무엇입니까? (0) | 2023.05.18 |
Postgres for Insert 문에서 UUID를 생성하시겠습니까? (0) | 2023.05.18 |
추적 출력을 콘솔로 리디렉션 (0) | 2023.05.18 |