Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "context"
- "fmt"
- "log"
- "time"
- "go.mongodb.org/mongo-driver/bson"
- "go.mongodb.org/mongo-driver/mongo"
- "go.mongodb.org/mongo-driver/mongo/options"
- )
- func main() {
- fmt.Println("Connecting to MongoDB!")
- clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
- client, err := mongo.Connect(context.TODO(), clientOptions)
- if err != nil {
- log.Fatal(err)
- }
- err = client.Ping(context.TODO(), nil)
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println("Connected to MongoDB!")
- // Send a ping to confirm a successful connection
- var result bson.M
- if err := client.Database("Matt").RunCommand(context.TODO(), bson.D{{"ping", 1}}).Decode(&result); err != nil {
- panic(err)
- }
- // Access the collection
- collection := client.Database("galaxyStations").Collection("galaxyStations")
- // Define the filter for querying documents (optional)
- filter := bson.D{
- {"controllingPower", "Pranav Antal"},
- {"powerState",
- bson.D{
- {"$in",
- bson.A{
- "Exploited",
- "Fortified",
- "Stronghold",
- },
- },
- },
- },
- }
- // Execute the query
- cursor, err := collection.Find(context.TODO(), filter)
- if err != nil {
- log.Fatalf("Failed to execute query: %v", err)
- }
- defer cursor.Close(context.TODO())
- // Unmarshal the documents into a slice of structs
- var systems []System
- for cursor.Next(context.TODO()) {
- var system System
- //fmt.Println(cursor.Current)
- if err := cursor.Decode(&system); err != nil {
- log.Printf("Error decoding document: %v", err)
- continue
- }
- systems = append(systems, system)
- }
- // Check for cursor errors
- if err := cursor.Err(); err != nil {
- log.Fatalf("Cursor error: %v", err)
- }
- // Print the results
- fmt.Println("Retrieved documents:")
- for _, system := range systems {
- fmt.Printf("Name: %s, Population: %d, Economies: %s, Bodies ID64: %v\n", system.Name, system.Population, system.PrimaryEconomy, system.Bodies[0].ID64)
- }
- }
- type System struct {
- ID struct {
- Oid string `json:"$oid"`
- } `json:"_id"`
- ID64 int `json:"id64"`
- Name string `json:"name"`
- Coords struct {
- X float64 `json:"x"`
- Y float64 `json:"y"`
- Z float64 `json:"z"`
- } `json:"coords"`
- Allegiance any `json:"allegiance"`
- Government string `json:"government"`
- PrimaryEconomy string `json:"primaryEconomy"`
- SecondaryEconomy string `json:"secondaryEconomy"`
- Security string `json:"security"`
- Population int `json:"population"`
- BodyCount int `json:"bodyCount"`
- Date string `json:"date"`
- Bodies []struct {
- ID64 int64 `json:"$numberLong"`
- BodyID int `json:"bodyId"`
- Name string `json:"name"`
- Type string `json:"type"`
- OrbitalPeriod float64 `json:"orbitalPeriod"`
- SemiMajorAxis float64 `json:"semiMajorAxis"`
- OrbitalEccentricity float64 `json:"orbitalEccentricity"`
- OrbitalInclination float64 `json:"orbitalInclination"`
- ArgOfPeriapsis float64 `json:"argOfPeriapsis"`
- MeanAnomaly float64 `json:"meanAnomaly"`
- AscendingNode float64 `json:"ascendingNode"`
- Timestamps struct {
- MeanAnomaly time.Time `json:"meanAnomaly"`
- } `json:"timestamps,omitempty"`
- Stations []any `json:"stations"`
- UpdateTime string `json:"updateTime"`
- SubType string `json:"subType,omitempty"`
- DistanceToArrival float64 `json:"distanceToArrival,omitempty"`
- MainStar bool `json:"mainStar,omitempty"`
- Age int `json:"age,omitempty"`
- SpectralClass string `json:"spectralClass,omitempty"`
- Luminosity string `json:"luminosity,omitempty"`
- AbsoluteMagnitude float64 `json:"absoluteMagnitude,omitempty"`
- SolarMasses float64 `json:"solarMasses,omitempty"`
- SolarRadius float64 `json:"solarRadius,omitempty"`
- SurfaceTemperature float64 `json:"surfaceTemperature,omitempty"`
- RotationalPeriod float64 `json:"rotationalPeriod,omitempty"`
- RotationalPeriodTidallyLocked bool `json:"rotationalPeriodTidallyLocked,omitempty"`
- AxialTilt float64 `json:"axialTilt,omitempty"`
- Parents []struct {
- Null int `json:"Null"`
- } `json:"parents,omitempty"`
- Timestamps0 struct {
- DistanceToArrival time.Time `json:"distanceToArrival"`
- MeanAnomaly time.Time `json:"meanAnomaly"`
- } `json:"timestamps,omitempty"`
- Timestamps1 struct {
- DistanceToArrival time.Time `json:"distanceToArrival"`
- MeanAnomaly time.Time `json:"meanAnomaly"`
- } `json:"timestamps,omitempty"`
- Timestamps2 struct {
- DistanceToArrival time.Time `json:"distanceToArrival"`
- MeanAnomaly time.Time `json:"meanAnomaly"`
- } `json:"timestamps,omitempty"`
- } `json:"bodies"`
- Stations []struct {
- Name string `json:"name"`
- ID float64 `json:"$numberLong"`
- UpdateTime string `json:"updateTime"`
- ControllingFaction string `json:"controllingFaction"`
- ControllingFactionState any `json:"controllingFactionState"`
- DistanceToArrival float64 `json:"distanceToArrival"`
- PrimaryEconomy string `json:"primaryEconomy"`
- Economies struct {
- PrivateEnterprise int `json:"Private Enterprise"`
- } `json:"economies"`
- Government string `json:"government"`
- Services []string `json:"services"`
- Type string `json:"type"`
- LandingPads struct {
- Large int `json:"large"`
- Medium int `json:"medium"`
- Small int `json:"small"`
- } `json:"landingPads"`
- Market struct {
- Commodities []struct {
- Name string `json:"name"`
- Symbol string `json:"symbol"`
- Category string `json:"category"`
- CommodityID int `json:"commodityId"`
- Demand int `json:"demand"`
- Supply int `json:"supply"`
- BuyPrice int `json:"buyPrice"`
- SellPrice int `json:"sellPrice"`
- } `json:"commodities"`
- ProhibitedCommodities []any `json:"prohibitedCommodities"`
- UpdateTime string `json:"updateTime"`
- } `json:"market"`
- } `json:"stations"`
- }
- Name: Sigma Andromedae, Population: 265363, Economies: Military, Bodies ID64: 36028798325482672
- Name: Gliese 3002, Population: 1287837285, Economies: Tourism, Bodies ID64: 10460580195
- Name: Dieslic, Population: 94710, Economies: Refinery, Bodies ID64: 36028807479560544
- Name: HIP 3311, Population: 87132, Economies: Tourism, Bodies ID64: 10477341027
- Name: 79 Psi-2 Piscium, Population: 884451, Economies: Military, Bodies ID64: 36028819800319152
Add Comment
Please, Sign In to add comment