0

这是我的收藏:

{ num: 4, title: "alpha", data: 7538 }
{ num: 2, title: "beta", data: 7538 }
{ num: 7, title: "beta", data: 7538 }
{ num: 5, title: "alpha", data: 7538 }

我希望 MongoDB 先对它们进行排序num然后忽略title. 我期待着:

{ num: 2, title: "beta", data: 7538 }
{ num: 4, title: "alpha", data: 7538 }

我需要使用哪个功能?我怀疑它是aggregate(),但究竟如何使用它呢?

4

1 回答 1

1

是的,你必须使用聚合框架。下面是一个例子,说明如何使用 AF 来达到预期的结果,考虑到你想要排序numASC方式。

db.collection.aggregate(
    {
        "$group" : {
            _id : "$title",
            num : { "$min" : "$num" },
            data : { "$first" : "$data" }
        }
    },
    {
        "$sort" : { "num" : 1 }
    }
)

在这里,您基本上是按 对文档进行分组title,获得 的最小值num和 的第一个值data。如果要按DESC方式排序,请使用$max而不是$minnum现场并-1$sort管道阶段使用。

于 2013-07-26T19:38:37.897 回答