Meteor에 $currentDate to MongoDB 컬렉션이 있는 필드 삽입
Meteor의 MongoDB 컬렉션에 문서를 삽입할 때 $currentDate를 사용하는 방법을 잘 모르겠습니다.
이것은 삽입이 아닌 업데이트에서만 사용할 수 있습니까?이상하게 보일 수도 있지만 다른 대안이 보이지 않습니다(사용하는 것 외에는).new Date
대신).
예
Stuff.insert({
owner: Meteor.userId(),
createdAt: ..., // how to create this field with $currentDate ?
theStuff: "Some of the good stuff"
})
노트 / 생각 / TL, DR
- 필드는 $ 연산자로 시작할 수 없거나, 내가 아는 한, 곱슬곱슬한 중괄호로 시작할 수 없습니다.
{}
. - 정말 그렇다면 업데이트로만 작동하는 운영자를 두는 것이 무슨 의미가 있습니까?
- 가/언제입니까?
$currentDate
보다 나은new Date
? - 한 가지 좋은 점은 Moment.jssp를 사용하는 경우 $currentDate가 ISO 8601 형식으로 입력된다는 것입니다.
- 처음부터 약간의 반전을 하는 것이 정답인가요?그렇다면 의도하지 않은 결과를 초래할 수 있습니까?
정말 그렇다면 업데이트로만 작동하는 운영자를 두는 것이 무슨 의미가 있습니까?
$currentDate
업데이트 연산자이므로 사용할 수 없습니다.collection.insert
방법.하지만 언제가true
쿼리 기준과 일치하는 문서가 없을 때 새 문서를 작성합니다.MongoDB 운영자들은 유닉스 철학을 따르는 경향이 있습니다.
한 가지 일을 하고 잘하기
따라서 각 측정 시스템은 하나의 작업만 수행해야 합니다.
가/언제입니까?
$currentDate
보다 나은new Date
?
먼저 저는 그것을 언급하고 싶습니다.new Date
는 JavaScript Date 인스턴스입니다.
$currentDate
그리고.new Date
때 사용할 수.new Date
작동하려면 다른 업데이트 연산자를 사용해야 합니다.예:
용사를 합니다.
new Date
db.collection.update({ "name": "bar" }, { "$set": { "date": new Date() }})
용사를 합니다.
$currentDate
db.collection.update({ "name": "bar"}, { "$currentDate": { "date": { "$type": date }}} )
와는과 다르게 .$currentDate
에서new Date
사용할 수 있습니다.insert
방법과 값은 다음과 같은 경우 특정으로 설정할 수 있습니다.Date
인수가 둘 이상인 호출입니다.
삽입 작업 내에 생성된 자동 생성 "_id"에서 타임스탬프를 검색할 수 있습니다.
http://api.mongodb.com/java/current/org/bson/types/ObjectId.html
ObjectId.getTimestamp() 메서드를 사용합니다.
타임스탬프 세분성은 초 단위입니다.
컬렉션 모델에서 autoValue를 사용하면 더욱 간단해집니다.
createdAt:
type: Date
autoValue: ->
if this.isInsert
return new Date
else if this.isUpsert
return $setOnInsert: new Date
else
this.unset()
데이터를 삽입하거나 업데이트하는 동안 자동으로 날짜를 설정합니다.
$currentDate는 $update 구성에서 사용할 때 문서에 필드가 존재하지 않는 경우 필드를 삽입하는 데 사용할 수 있습니다.
Mongodb 3.4에 대한 문서 인용: 동작
If the field does not exist, $currentDate adds the field to a document.
비록 저는 이 디자인이 완벽하게 말이 된다는 것에 전적으로 감사하지만, 당신이 설정하고 싶어하는 주장이 있습니다, 아마도 나쁜 주장일 것입니다.updated_at
문서를 삽입할 때 합리적인 항목을 입력합니다.마지막 업데이트 시간을 얻기 위해 항상 두 개의 필드를 쿼리할 필요가 없도록 하기 위해 이 작업을 수행할 수 있습니다.제가 말했듯이, 이것은 나쁜 쥬쥬일지도 모르지만, 자, 여기 있습니다.
어쨌든 이 일을 하기 위해 제가 생각해 낼 수 있는 최고의 해킹은upsert
에 영향을 미치는.not the empty filter
그것은 그것이 보장합니다.upsert
는 항상 입니다.insert
.
MongoDB Devs에게 이것에 대한 작은 의견을 드리겠습니다.MongoDB에서 타임스탬프를 올바르게 수행해야 하는 방법을 이해하는 것은 데이터베이스를 사용하여 기억하는 것보다 더 오랜 시간 동안 작업한 사람으로서입니다.
created_at => _id.Timestamp
updated_at => $currentDate()
너무 오래 걸렸어요아마도 그것은 제 잘못일 수도 있고, 그럴 수도 있지만, 대부분의 사람들이 아마도 하고 싶어하거나 해야 한다고 생각하는 것이고, 개념적으로 더 잘 설명될 수 있을 것입니다.주변을 검색하면 많은 나쁜/잘못된 정보를 찾을 수 있을 것입니다. 왜냐하면 저는 이것이 그것을 하는 방법이라고 꽤 확신하기 때문입니다. 그리고 인터넷은 이것에 대한 합의와는 거리가 멀기 때문입니다(지금은 그렇지만).
모르겠어요, 아마 시험일 거예요.MongoDB 개발자를 고용할 때 누군가에게 가장 먼저 물어보는 것이 이것일지도 모릅니다: 타임스탬프는 어떻게 합니까?어쨌든 제가 묻고 싶은 것은 그 단계에서 API의 대부분을 배웠다는 것입니다.
언급URL : https://stackoverflow.com/questions/30204661/insert-field-with-currentdate-to-mongodb-collection-in-meteor
'programing' 카테고리의 다른 글
SQL Server 2005의 VARBINARY 필드 크기 (0) | 2023.06.29 |
---|---|
개체 리터럴의 키를 유형 스크립트 유형으로 사용하시겠습니까? (0) | 2023.06.29 |
목록 색인을 기준으로 판다 행 선택 (0) | 2023.06.29 |
asp:TextBox ReadOnly=true 또는 Enabled=false? (0) | 2023.06.29 |
Git Blame Commit 통계 (0) | 2023.06.29 |