programing

Meteor에 $currentDate to MongoDB 컬렉션이 있는 필드 삽입

javamemo 2023. 6. 29. 19:41
반응형

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

반응형