Naar de inhoud

JSON naar Go BSON omzetten — Numio

Herschrijft een JSON-document als een letterlijke Go, opgebouwd uit bson.M (objecten) en bson.A (arrays) voor het MongoDB Go-stuurprogramma, met de afsluitende komma's die Go vereist. Sleutels behouden hun volgorde, null wordt nul en strings worden ongewijzigd gekopieerd.

Een MongoDB-query of filter, getest in Mongosh of Compass, overzetten naar Go-code.

JSON

Go Bson

Wanneer gebruik je dit?

  • Een MongoDB-query of filter, getest in Mongosh of Compass, overzetten naar Go-code.
  • Een aggregatiefase of updatedocument schrijven als een inline Go-letterlijk in een test.

Hoe werkt het

  1. Plak de query, filter of document als strikte JSON (sleutels tussen aanhalingstekens, geen ObjectId(...) of ISODate(...) shell-helpers).
  2. Kopieer de letterlijke bson.M{...} uit het Go-paneel; operatoren zoals $gte, $in en $or worden bewaard als stringsleutels.
  3. Importeer go.mongodb.org/mongo-driver/bson en geef de waarde door aan Find, UpdateOne of Aggregate, bewerk de typen zoals hieronder aangegeven.

JSON-ingang

{
  "status": "active",
  "deletedAt": null,
  "age": { "$gte": 18 },
  "tags": { "$in": ["go", "mongo"] },
  "$or": [
    { "verified": true },
    { "score": { "$gt": 90 } }
  ]
}

Go bson.M / bson.A

bson.M{
  "status": "active",
  "deletedAt": nil,
  "age": bson.M{
    "$gte": 18,
  },
  "tags": bson.M{
    "$in": bson.A{
      "go",
      "mongo",
    },
  },
  "$or": bson.A{
    bson.M{
      "verified": true,
    },
    bson.M{
      "score": bson.M{
        "$gt": 90,
      },
    },
  },
}

Details en beperkingen

De JSON wordt geparseerd en in uw browser gelopen om de letterlijke op te bouwen; er wordt niets naar een server verzonden.

nul wordt nul. Getallen zijn ongetypeerde Go-constanten, dus 18 wordt int en 1,5 float64; gehele getallen groter dan 2 ^ 53 verliezen precisie wanneer de JSON wordt geparseerd.

Tekenreeksen worden geschreven als letterlijke Go-tekenreeksen, dus haakjes of accolades erin, zoals "tags[0]", blijven onaangeroerd.

Het voert bson.M uit, wat ongeordend is. Gebruik bson.D waar de veldvolgorde van belang is, zoals het sorteren van documenten of bepaalde pijplijnfasen.

FAQ

Kan ik een Mongosh-query plakken met ObjectId() of ISODate()?

Nee. De invoer moet geldig JSON zijn, dus shell-helpers veroorzaken een parseerfout. Gebruik gewone tekenreeksen en vervang ze in Go door een ObjectID uit hex (primitive.ObjectIDFromHex in driver v1) of een time.Time-waarde.

Genereert het Go-structuren?

Nee, het produceert alleen kaart- en segmentletterlijke waarden. Voor getypte structuren met json-tags gebruikt u de JSON to Go-pagina.

Moet de wortel een object zijn?

Nee. Een rootarray wordt bson.A{...}, wat past bij een aggregatiepijplijn, waarbij elke fase een bson.M is.

Specificaties en referenties