Почему я не могу найти данные, вставленные в IDE, в режиме терминала? - PullRequest
0 голосов
/ 19 сентября 2019

Я пытался вставить данные через Goland IDE в MongoDB.Хотя соединение правильное, и в выводе IDE я получил ObjectID, я все еще не могу видеть результаты от терминала напрямую.Кажется, что база данных записывает новый документ без какой-либо информации ...

OSX, MongoDB по умолчанию.Драйвер 'go.mongodb.org/mongo-driver', и соединение установлено правильно.Голанд на 2019.2.2

// go

type Student struct {
    name string
    sex string
}

newStu := Student{
    name: "Alice",
    sex: "Female",
}

collection := client.Database("mgo_1").Collection("student")

insertResult, err := collection.InsertOne(context.TODO(), newStu)

if err != nil {
   log.Fatal(err)
    }

fmt.Println(insertResult.InsertedID)

Это часть вставки, которую я следовал руководству на mongodb.com

> db.student.find()
{ "_id" : ObjectId("5d82d826f5e2f29823900275"), "name" : "Michael", "sex" : "Male" }
{ "_id" : ObjectId("5d82d845b8db68b150894f5a") }
{ "_id" : ObjectId("5d82dc2952c638d0970e9356") }
{ "_id" : ObjectId("5d82dcde8cf407b2fb5649e7") }

Это результат, который язапрос в другом терминале.За исключением первого, содержащего некоторый контент, остальные три - это то, что я пытался вставить в базу данных через Голанд три раза.

1 Ответ

0 голосов
/ 19 сентября 2019

Итак, ваша структура выглядит следующим образом:

type Student struct {
    name string
    sex string
}

Поля name и sex не начинаются с прописных букв, поэтому они не экспортируются и, следовательно, не видны для отражения.InsertOne, несомненно, использует отражение, чтобы выяснить, что находится в newStu, но структура Student не имеет экспортируемых полей, поэтому InsertOne вообще не видит никаких полей в newStu.

Если вы исправитеваша структура имеет экспортируемые поля:

type Student struct {
    Name string
    Sex string
}

, тогда InsertOne сможет выяснить, что в ней.Интерфейс MongoDB должен самостоятельно определять соответствие от Name (Go) до name (MongoDB) и Sex до sex.

...