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
- Plak de query, filter of document als strikte JSON (sleutels tussen aanhalingstekens, geen ObjectId(...) of ISODate(...) shell-helpers).
- Kopieer de letterlijke bson.M{...} uit het Go-paneel; operatoren zoals $gte, $in en $or worden bewaard als stringsleutels.
- 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.