Go 中使用mongodb官方驱动需要注意的点

顺序,注意顺序

    cursor, err := mdb.Collection("idols_forum_count").Find(context.TODO(),
        bson.M{},
        &options.FindOptions{
            Sort: bson.D{
                {"date", -1},
                {"count", -1},
            },
            Skip:  &skip,
            Limit: &perPage,
            Projection: bson.M{
                "_id":     0,
                "idol_id": 1,
                "count":   1,
                "date":    1,
            },
        },
    )
    cursor, err := mdb.Collection("idols_forum_count").Find(context.TODO(),
        bson.M{},
        &options.FindOptions{
            Sort: bson.M{
                "date": -1,
                "count": -1,
            },
            Skip:  &skip,
            Limit: &perPage,
            Projection: bson.M{
                "_id":     0,
                "idol_id": 1,
                "count":   1,
                "date":    1,
            },
        },
    )

你发现这两段代码的不同之处了吗?

            Sort: bson.D{
                {"date", -1},
                {"count", -1},
            },

            Sort: bson.M{
                "date": -1,
                "count": -1,
            },

以一定要牢记 bson.M 是无序的,bson.D 是有序的。排序字段的顺序是会影响结果和性能的。

你可能感兴趣的:(Go 中使用mongodb官方驱动需要注意的点)