MongoDB에 게시할 때 생성되는 추가 'id' 필드

王林
풀어 주다: 2024-02-05 23:21:07
앞으로
720명이 탐색했습니다.

发布到 MongoDB 时生成的附加“id”字段

질문 내용

go 및 gin 프레임워크를 배우고 있습니다. mongodb 컬렉션에 연결하는 간단한 마이크로서비스를 구축했는데 모든 것이 잘 작동하지만 post를 사용하여 문서를 추가하면 키 "_id" 필드를 생성하는 대신 "id" 필드가 추가됩니다. 이를 방지할 수 있는 방법이 있습니까?

내 기능은 다음과 같습니다.

으아아아

이것은 내 모델입니다:

func (r *rest) createpost(c *gin.context) {
var postcollection = database.getcollection(r.db, "godb")
ctx, cancel := context.withtimeout(context.background(), 10*time.second)
post := new(model.post)
defer cancel()

if err := c.shouldbindjson(&post); err != nil {
    c.json(http.statusbadrequest, gin.h{"message": err})
    log.fatal(err)
    return
}

// validation
if err := post.validate(); err == nil {
    c.json(http.statusok, gin.h{"input": "valid"})
} else {
    c.json(http.statusbadrequest, gin.h{"input validation": err.error()})
    return
}

postpayload := model.post{
    id:      primitive.newobjectid(),
    title:   post.title,
    article: post.article,
}

result, err := postcollection.insertone(ctx, postpayload)

if err != nil {
    c.json(http.statusinternalservererror, gin.h{"message": err})
    return
}

c.json(http.statusok, gin.h{"message": "posted succesfully", "data": 
map[string]interface{}{"data": result}})
}
로그인 후 복사

정답


기본적으로 id 的密钥是 id。您应该使用 bson 标签来生成密钥 _id입니다.

으아아아

이것은 문서입니다:

구조를 마샬링할 때 각 필드는 해당 bson 요소에 대한 키를 생성하기 위해 소문자입니다. 예를 들어 "foo"라는 구조 필드는 "foo" 키를 생성합니다. 이는 구조 태그를 통해 재정의될 수 있습니다(예: "foofield" 키를 생성하기 위해 bson:"foofield").

문서에 _id라는 요소가 없으면 드라이버가 자동으로 요소를 추가합니다(소스 코드 참조).

으아아아

데모는 다음과 같습니다.

으아아아

그리고 데이터베이스에 생성된 문서:

으아아아

위 내용은 MongoDB에 게시할 때 생성되는 추가 'id' 필드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!