В конце концов я использую go lang, а для базы данных я использую mongoDB. Я пытаюсь найти последний документ, вставленный во встроенный массив, поэтому я могу получить документ в последнем индексе массива, не зная его index.Right теперь im получить все документы сотрудника, а затем найти последний index.It, как перегрузка мой RAM, как мне нужно, чтобы получить 1000 записи сотрудника и хранить его в оперативной памяти, прежде чем найти последний индекс массива Моя структура выглядит следующим образом, чтобы найти последний индекс массива в mongodb
type (
Employee struct {
Name string
Password string
EmpId string
EmailAddress string
Position string
Gender string
Nationality string
Department string
MaritalStatus string
Approvedby string
JoinDate time.Time
ConfirmationDate time.Time
EndDate time.Time
Leave []*LeaveInfo
}
LeaveInfo struct {
Total float64
Id int
Days float64
From time.Time
To time.Time
Status string
Certificate []*CertificateInfo
}
CertificateInfo struct {
FileName string
FileType string
FileSize int
}
Вот как я делаю в моем приложении
My code is follows
employee := Employee{}
err = c.Find(bson.M{
"empid": "1234"
}).One(&result)
if err != nil {
log.Fatal(err)
}
name:=result.Name
lastindex:= result.LeaveInfo[len(result.LeaveInfo)-1].Id
Как вы можете видеть, я извлекаю все данные о сотрудниках, а затем нахожу Идентификатор последнего документа. Есть ли какая-либо ставка эр способ сделать this.Appreciate любой help.Please ... Спасибо ..
Недавно добавленные Коды
This code is based on your example
var result bson.M
query := bson.M{"empid": "1234"} // gets the employee you are interested in
match := bson.M{"$match": query} // Set up the match part of the pipeline
unwind := bson.M{"$unwind": "$leave"} // sets up the leave field to be unwound
pipeline := []bson.M{match, unwind,{
"$project":bson.M{
"ID":bson.M{
"$slice": []interface{}{"$leave.id", -1},
}
}
iter := postCollection.Pipe(pipeline).Iter()
for iter.Next(&result) {
fmt.Printf("%+v\n", result)
}
iter.Close()
Этот код дает мне много того же документа, как 542 документов .Но все эти документ тот же ...
Спасибо user1638680 ..... Есть ли другой атрибут в mongodb, который помогает нам находить наименьший индекс. Это определенно лучше, чем мой код, но я не хочу, чтобы 1000 записей остаточного массива были извлечены внутри ram для каждого запроса, даже если мы просто извлекаем только два атрибута массива leave.Thanks ... Еще раз спасибо за вашу помощь. –
В Mongo 3.2 вы можете использовать $ slice с отрицательным числом из оболочки Mongo, например – dgm
Упс, я нажал преждевременно. С оболочкой Mongo вы можете запустить запрос типа: db.c.find ({"empid": "1234"}, {"leave": {$ slice: -1}}) и получить последнюю запись в массиве. Я быстро посмотрел и не нашел примеров использования $ slice от Go. – dgm