正确的mongodb脚本是:
db.milestones.aggregate([
{$unwind: "$milestones"},
{$match: {
"cluster":{$in: ['RIM']},
"milestones.kpi.uniqueid": 1,
"milestones.plannedlateststartdate" : {
$gte: 1546143215,
$lte: 1577679215
}}}])
这是我的转到代码:
aggregate := []bson.M{
{
"$unwind": "$milestones",
},
}
match := bson.M{
"$match": bson.M{
"milestones.kpi.uniqueid": 1,
},
}
if len(clusters) > 0 {
match["$match"].(bson.M)["cluster"] = bson.M{
"$in": clusters,
}
}
// [startDate, endDate]
const key = `milestones.plannedlateststartdate`
filter := bson.M{}
filter["$gte"] = 1546143215
filter["$lte"] = 1577679215
match["$match"].(bson.M)[key] = filter
aggregate = append(aggregate, match)
var all = make([]interface, 0)
err := s.DB(c.dbName).C(collMilestones).Pipe(aggregate).All(&all)
我认为从mongo开始使用相同的脚本,但结果却有所不同。 mongo脚本中的结果很多,但执行时为0。