mgo中的$ dateToString不起作用

时间:2016-09-20 02:25:34

标签: mongodb go mgo

我在Go中编写了代码。我在mgo中有一个mongodb查询,让我忙了3天,仍然在与它斗争。

虽然使用mongo shell的查询有效,但使用mgo的mongodb查询不起作用。

以下查询和结果是使用mongo shell进行的。

// Query
db.getCollection("TEST").aggregate([
{
    "$match": {
        "date": {"$gte": new Date("2016-06-28"), "$lte": new Date("2016-06-29")},
    }
},
{
    "$project": {
        "_id": false,
        "date": {"$dateToString": {"format": "%Y%m%d", "date":"$date"}},
    },
},
]);


// Result
{
"date" : "20160628",
}
{
"date" : "20160629",
}

以下查询和结果是使用mgo进行的。它不起作用。

// Query
matchQuery := bson.M{}
matchQuery["date"] = bson.M{
    "$gte": time.Date(2016, 6, 28, 0, 0, 0, 0, time.UTC),
    "$lte": time.Date(2016, 6, 29, 23, 59, 59, 0, time.UTC),
}
projectQuery := bson.M{
    "_id": false,
    "date": bson.M{
        "$dateToString": bson.M{"format": "%Y%m%d", "date": "$date"},
    },
}
pipeline := []bson.M{
    {"$match": matchQuery},
    {"$project": projectQuery},
}


// Result
{
    "date": "0001-01-01T00:00:00Z",
},

{
    "date": "0001-01-01T00:00:00Z",
}

我如何正确使用$ dateToString?

1 个答案:

答案 0 :(得分:0)

我解决了。这是我的错。我发布答案,以便任何人都不会像我一样犯错误。我没有从" time.Time"中更改变量类型。 to" string"如下。

//Old
type content struct {
    Date  time.Time `bson:"date" json:"date"`
}

//New
type content struct {
    Date  string `bson:"date" json:"date"`
}

谢谢:)