mongodb - 使 Sort() 在 MongoDB 查询中工作
问题描述
在这里,我正在使用 对我的数据进行排序,sort()
但效果不佳。下面我也发布了我的代码和输出:-
代码:-
结构声明
import( "github.com/gin-gonic/gin" "gopkg.in/mgo.v2/bson" "strconv" "fmt" "time" "gopkg.in/mgo.v2"// for db ) type Schedule struct{ Id int `json:"_id" bson:"_id"` Day string `form:"day" json:"day" bson:"day"` StartDate int64 `form:"start_date" json:"start_date" bson:"start_date"` EndDate int64 `form:"end_date" json:"end_date" bson:"end_date"` StartTime int64 `form:"start_time" json:"start_time" bson:"start_time"` EndTime int64 `form:"end_time" json:"end_time" bson:"end_time"` } type Schedules []Schedule
数据库功能
func GetSchedulingListing(Query interface{}) (result Schedules, err error) { mongoSession := ConnectDb() sessionCopy := mongoSession.Copy() defer sessionCopy.Close() getCollection := mongoSession.DB("schedule2").C("schedule") err = getCollection.Find(Query).Select(bson.M{"start_date": 1, "end_date": 1}).Sort("start_date").All(&result) if err != nil { return result, err } return result, nil } func GetSchedule(c *gin.Context) { selected_day:= "Monday" conditions := bson.M{"day":selected_day} data, err := models.GetSchedulingListing(conditions) for i := range data { start_date := data[i].StartDate end_date := data[i].EndDate days:= time.Unix(end_date,0).Sub(time.Unix(start_date,0)).Hours() / 24 for i := 1; i <= int(days+1); i++ { if selected_day == time.Unix(start_date,0).Weekday().String() { fmt.Println(start_date) } start_date = start_date + 86400 } } }
在上面的代码中,我Sort("start_date")
在查询函数中使用GetSchedulingListing
。但它不能很好地打印输出,如: -
输出:-
1525651200
1526256000
1526860800
1527465600
1525651200
1526256000
1526860800
1527465600
预期输出:-
1525651200
1525651200
1526256000
1526256000
1526860800
1526860800
1527465600
1527465600
数据库记录:-
{
"_id" : 1,
"day" : "Monday",
"start_date" : NumberLong(1525132800),
"end_date" : NumberLong(1527638400),
"start_time" : NumberLong(22800),
"end_time" : NumberLong(30000)
}
{
"_id" : 2,
"day" : "Monday",
"start_date" : NumberLong(1525132800),
"end_date" : NumberLong(1527638400),
"start_time" : NumberLong(12000),
"end_time" : NumberLong(19200)
}
查询检索到的数据
[{1 1525132800 1527638400 0 0} {2 1525132800 1527638400 0 0}]
// because I'm using the `.Select(bson.M{"start_date": 1, "end_date": 1})`
谁能告诉我为什么没有得到我的预期输出有什么问题。谢谢你。
解决方案
推荐阅读
- javascript - 从仅包含类脚本的 vue 组件访问数据
- javascript - 在输出之间添加换行符
- awk - 是否有一种简单的 awk/sed 方法可以在 YAML 文件中打印列表?
- express - 为什么我无法从 localhost 客户端连接到 localhost 服务器(cors 错误)?
- java - 将 Java 套接字从线程 A 传递到 B
- r - 在 R 中使用 LongituRF 包实现纵向随机森林
- bash - 使用 Cmder 作为 bash 控制台,在其中声明要使用参数调用的函数,例如别名
- azure - 管道中的 Azure 文件复制任务创建 $tf 目录
- javascript - 如何在我的内部显示我的 javascript
标签使它成为一个单行句子?
- azure - 如何使用 Terraform 从不同 Azure 帐户中的 blob 创建托管磁盘?