Node.js 按MongoDB中具有相等字段的文档数进行排序/分组
我想要实现的是将这些文档分组Node.js 按MongoDB中具有相等字段的文档数进行排序/分组,node.js,database,mongodb,sorting,document,Node.js,Database,Mongodb,Sorting,Document,我想要实现的是将这些文档分组 {voteid: A, userid: x}, {voteid: C, userid: x}, {voteid: A, userid: y}, {voteid: A, userid: z}, {voteid: C, userid: z}, {voteid: D, userid: z} 在具有投票数的对象中(此处的用户是无关的),并根据voteid对其进行排序: {voteid: A, votes: 3}, {voteid: C, votes: 2}, {votei
{voteid: A, userid: x}, {voteid: C, userid: x},
{voteid: A, userid: y}, {voteid: A, userid: z},
{voteid: C, userid: z}, {voteid: D, userid: z}
在具有投票数的对象中(此处的用户是无关的),并根据voteid对其进行排序:
{voteid: A, votes: 3},
{voteid: C, votes: 2},
{voteid: D, votes: 1}
我应该怎么做
我正在使用MongoDB 3.0 Node.js驱动程序好的,这将帮助您进行查询(计数)并对它们进行排序
db.yourCollection.aggregate([{
$group: {
_id: '$voteid',
votes: {$sum: 1}
}
},
{
$sort: {
_id: 1
}
},
{
$project: {
_id: 0,
voteid: '$_id',
votes: 1
}
}
])
我们在这里要做的是首先在记录上应用$group
操作符,并通过将voteid
作为累加器对象分配给\u id
并随后在投票中存储计数值--{$sum:1}
来查找所有出现的voteid
然后,我们根据刚刚用voteid
创建的\u id
对\u id进行排序,然后以我们需要的形式投影结果——消除\u id
并将前一组\u id
重新映射到voteid
,并允许在结果中进行投票
希望这有帮助。