sql >> データベース >  >> NoSQL >> MongoDB

mongodb-go-driver/bson構造体からbson.Documentエンコーディング

    残念ながら、これは現在サポートされていません。

    構造体の値を bson.Document このように:

    func toDoc(v interface{}) (doc *bson.Document, err error) {
        data, err := bson.Marshal(v)
        if err != nil {
            return
        }
    
        err = bson.Unmarshal(data, &doc)
        return
    }
    

    次に、次のように使用できます:

    partialUpdate := &NoteUpdate{
        Title: "Some new title",
    }
    
    doc, err := toDoc(partialUpdate)
    // check error
    
    res := c.FindOneAndUpdate(
        context.Background(),
        bson.NewDocument(bson.EC.String("_id", "some-note-id")),
        bson.NewDocument(bson.EC.SubDocument("$set", doc)),
    )
    

    うまくいけば、 ElementConstructor.Interface() 将来的に改善され、構造体値または構造体値へのポインタを直接渡すことができるようになります。




    1. MongoDB-$setを使用してサブドキュメントを更新します

    2. パフォーマンスを損なうことなく、MongoDBでいくつのコレクションが可能ですか?

    3. mongoDBでユーザーが費やした合計時間を検索します

    4. 接続文字列でMongooseを使用してMongoDBAtlasに接続できません