使Sort()在MongoDB查询中工作

使Sort()在MongoDB查询中工作,mongodb,sorting,go,Mongodb,Sorting,Go,在这里,我使用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

在这里,我使用
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
        }
      }
    }
    
    预期产出:-

     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})` 
    

    有人能告诉我为什么我没有得到预期的产出是什么问题吗。谢谢。

    golang
    还是
    mongodb
    问题?您是否尝试运行此查询wo
    go
    ?我认为
    go
    -库本身只是一个没有任何改变的接口。我建议你仔细看看mongo。如果您仍然怀疑
    go
    ,请在问题中添加您正在使用的库。@Ingaz我添加了我的库。我看不出您是如何从提供的2个文档中获得“输出”的。数字完全不同。这与mongodb无关。获取两条记录后,您可以为每条记录打印多行,同时修改一个数值。这些线路排列整齐是意料之中的事。这些行不能按mongodb排序。它们只存在于go.for
    result
    您使用的数据类型是什么
    [{1  1525132800 1527638400 0 0} {2  1525132800 1527638400 0 0}]
     // because I'm using the `.Select(bson.M{"start_date": 1, "end_date": 1})`