Я пытался вывести данные, полученные из поиска, используя пакет mgo / pkg, но когда я получаю данные, сбрасываю их и возвращаю, я получаю следующий вывод:
[
{
"_id": "",
"timerId": "",
"content": "task1",
"creationDate": 0
},
{
"_id": "",
"timerId": "",
"content": "task2",
"creationDate": 0
},
{
"_id": "",
"timerId": "",
"content": "task3",
"creationDate": 0
}
]
Печать с помощью fmt:
[{ObjectIdHex("") ObjectIdHex("") task1 0} {ObjectIdHex("") ObjectIdHex("") task2 0} {ObjectIdHex("") ObjectIdHex("") task3 0}]
Код, выполняющий это действие:
func (m *MongoDbRepository) GetTasksOnTheSameDateAsUserTimers(userId string)([]model.Task, error) {
var tasks []model.Task
// m.Db.Session.DB("project").C("tasks")
pipe := m.Db.C("tasks").Pipe([]bson.M{
// bson.M{
// "$lookup": bson.M{
// "from": "times",
// "localField": "timerId",
// "foreignField": "_id",
// "as": "timers",
// },
// },
// bson.M{
// "$lookup": bson.M{
// "from": "users",
// "localField": "timers.userId",
// "foreignField": "_id",
// "as": "userTasks",
// },
// },
// bson.M{
// "$project": bson.M{
// "timers": 0,
// },
// },
// bson.M{
// "$match": bson.M{
// "_id":bson.ObjectIdHex("5cb58c5c4d11610c20b52f1a"),
// },
// },
})
err := pipe.All(&tasks)
fmt.Println(tasks)
return tasks, err
}
Я прокомментировал все внутри канала, потому что не могу выполнить поиск, потому что не могу правильно получить результат трубопровода. Я знаю, что это ошибка сброса данных, потому что если я изменяю конечные строки, как это:
var tasksDump []interface{}
err := pipe.All(&tasksDump)
fmt.Println(tasksDump)
Тогда это вывод:
[map[_id:ObjectIdHex("5cb58c5c4d11610c20b52f1a") content:task1 creationDate:1555400713 timerId:ObjectIdHex("5cb5880891b3fb1e2830b743")] map[_id:ObjectIdHex("5cb58ccd4d11610c20b52f1b") content:task2 creationDate:1555400714 timerId:ObjectIdHex("5cb5880891b3fb1e2830b743")] map[_id:ObjectIdHex("5cb58d074d11610c20b52f1c") content:task3 creationDate:1555400700 timerId:ObjectIdHex("5cb5880891b3fb1e2830b743")]]
Итак, данные поступают, но при разборе у меня возникает проблема. Почему только поле содержимого анализируется правильно?
Код структуры, в которую я выгружаю данные из поиска:
type Task struct {
Id bson.ObjectId `json:"_id" bson:"_id"`
TimerId bson.ObjectId `json:"timerId" bson:"timerId"`
Content string `json:"content" bson:"content"`
CreationDate int64 `json:"creationDate" bson:"creationDate"`
}
Коллекция MongoDB, откуда я получаю данные: