Convertitore da JSON a strutture Go BSON — Numio
Riscrive un documento JSON come un valore letterale Go creato da bson.M (oggetti) e bson.A (array) per il driver Go MongoDB, con le virgole finali richieste da Go. Le chiavi mantengono il loro ordine, null diventa nil e le stringhe vengono copiate senza modifiche.
Trasferimento di una query MongoDB o di un filtro testato in Mongosh o Compass nel codice Go.
JSON
Go Bson
Quando usarlo
- Trasferimento di una query MongoDB o di un filtro testato in Mongosh o Compass nel codice Go.
- Scrivere una fase di aggregazione o aggiornare un documento come valore letterale Go in linea in un test.
Come si usa
- Incolla la query, il filtro o il documento come JSON rigoroso (chiavi tra virgolette, nessun helper della shell ObjectId(...) o ISODate(...)).
- Copia il letterale bson.M{...} dal pannello Go; operatori come $gte, $in e $or vengono mantenuti come chiavi di stringa.
- Importa go.mongodb.org/mongo-driver/bson e passa il valore a Trova, UpdateOne o Aggrega, modificando i tipi come indicato di seguito.
Ingresso JSON
{
"status": "active",
"deletedAt": null,
"age": { "$gte": 18 },
"tags": { "$in": ["go", "mongo"] },
"$or": [
{ "verified": true },
{ "score": { "$gt": 90 } }
]
}Vai 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,
},
},
},
}Dettagli e limiti
JSON viene analizzato e inserito nel browser per creare il valore letterale; nulla viene inviato a un server.
null diventa zero. I numeri sono costanti Go non tipizzate, quindi 18 diventa int e 1,5 float64; gli interi oltre 2^53 perdono precisione quando viene analizzato JSON.
Le stringhe sono scritte come valori letterali Go string, quindi le parentesi graffe al loro interno, come "tags[0]", vengono lasciate intatte.
Restituisce bson.M, che non è ordinato. Utilizza bson.D dove conta l'ordine dei campi, ad esempio l'ordinamento dei documenti o alcune fasi della pipeline.
FAQ
Posso incollare una query mongosh con ObjectId() o ISODate()?
No. L'input deve essere JSON valido, quindi gli helper della shell causano un errore di analisi. Utilizza stringhe semplici, quindi sostituiscile in Go con un ObjectID da esadecimale (primitive.ObjectIDFromHex nel driver v1) o un valore time.Time.
Genera strutture Go?
No, produce solo valori letterali mappa e sezione. Per le strutture digitate con tag json utilizzare la pagina JSON to Go.
La radice deve essere un oggetto?
No. Un array root diventa bson.A{...}, che si adatta a una pipeline di aggregazione, dove ogni fase è un bson.M.