Я использую golang в бэкэнд и mongoDB как базу данных. Когда я пытаюсь получить документы из одного из встроенных массивов, я получаю только один индекс встроенного массива в результате в результате.Извлечение элементов из встроенной матрицы в mgo (golang + MangoDB)
Моя структура подобна этой
type (
Employee struct {
Name string
EmpId string
Password string
Leave []*LeaveInfo
}
LeaveInfo struct {
Id int
Days float64
From time.Time
To time.Time
AppliedDate time.Time
Status string
ApprovedDate time.Time
}
Мой golang код
t := time.Date(2016, 10, 1, 0, 0, 0, 0, time.UTC)
var result []*Employee
if e := c.Find(nil).Select(bson.M{"leave": bson.M{
"$elemMatch": bson.M{
"from": bson.M{
"$gte":t,
},
},
},
},
).All(&result); e != nil {
fmt.Println(e)
}
Моя структура базы данных
_id:57d7a6673897593ae84bed49{
Name:"Mark"
EmpId:"E123"
Password:1234
Leave:[
{
"id" : 0,
"days" : 1.5,
"from" : ISODate("2016-12-01T00:00:00Z"),
"to" : ISODate("2016-12-02T12:00:00Z"),
"applieddate" : ISODate("0001-01-01T00:00:00Z"),
"status" : "Approved",
"approveddate" : ISODate("0001-01-01T00:00:00Z"),
},
{
"id" : 1,
"days" : 2.0,
"from" : ISODate("2016-12-11T00:00:00Z"),
"to" : ISODate("2016-12-12T00:00:00Z"),
"applieddate" : ISODate("0001-01-01T00:00:00Z"),
"status" : "Approved",
"approveddate" : ISODate("0001-01-01T00:00:00Z"),
},
]
}
В этом я получаю только индекс 0 из отпуска array.As вы можете видеть, что и индекс массива имеет дату, большую, чем t. Но когда я возвращаюсь, я получаю только один индекс ех (индекс 0). то, что мне нужно, чтобы извлечь весь индекс, который имеет даты больше, чем T.Please помощи me.thanks
Мой результат заключается в следующем
{
"Name": "",
"EmpId": "",
"Password": "",
"Leave": [
{
"Id": 0,
"Days": 1.5,
"from" : ISODate("2016-12-01T00:00:00Z"),
"to" : ISODate("2016-12-02T12:00:00Z"),
"applieddate" : ISODate("0001-01-01T00:00:00Z"),
"status" : "Approved",
"approveddate" : ISODate("0001-01-01T00:00:00Z"),
}
]
}
Вы бы лучше использовать '$ unwind' развернуть массив и' $ match' отфильтровывать искомый «уйти» от там на – Anzel
Thanks.Implemented и получил желаемый результат. Отправляю ответ сейчас. Спасибо –