Как вернуть документы mongodb из go в python

# #python #mongodb #go #cgo #ctype

Вопрос:

Я пытаюсь расширить свой код python с помощью golang, чтобы использовать goroutines. Я хочу получить документы из mongo в нескольких горотинах и отправить их обратно в модуль python. Теперь моя главная проблема заключается в преобразовании типов данных между go и python. Например, как я могу отправить результат fetchModelInstances в python?

main.py

 from ctypes import *
from pathlib import Path

here = Path(__file__).absolute().parent
so = cdll.LoadLibrary(str(here / "fetch.so"))
fetchObjects = so.fetchObjects
p = fetchObjects()
 

главное.вперед

 package main

import "C"
import (
    "context"
    "fmt"
    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
    "time"
)

//export fetchObjects
func fetchObjects() {
    ids := []int{86, 971526}
    fetchModelInstances(ids)
}

func fetchModelInstances(value []int) []bson.M {
    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
    defer cancel()
    client, _ := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
    collection := client.Database("blog").Collection("post")
    cur, _ := collection.Find(ctx, bson.M{"_id": bson.M{"$in": value}})
    var res []bson.M
    err := cur.All(ctx, amp;res)
    if err != nil {
        fmt.Println(err.Error())
    }
    return res
}
func main() {}
 

Комментарии:

1. это трудно преобразовать go-obj в python-obj, в общем случае, используя json(строка) -> return json.Marshal(res)