MongoDB管道(Golang)仅返回文档内部的四个字段之一

时间:2019-04-16 13:43:37

标签: mongodb api go

我试图使用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集合:

enter image description here

0 个答案:

没有答案