Sort/Group 乘以 MongoDB 中具有相同字段的文档数
Sort/Group by the number of documents with equal fields in MongoDB
我要实现的是对这些文档进行分组,
{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 驱动程序
好的,这将帮助您进行查询(计数)并将它们排序为 voteid
、
db.yourCollection.aggregate([{
$group: {
_id: '$voteid',
votes: {$sum: 1}
}
},
{
$sort: {
_id: 1
}
},
{
$project: {
_id: 0,
voteid: '$_id',
votes: 1
}
}
])
我们在这里所做的是首先在记录上应用 $group
运算符,并通过将 voteid
作为累加器对象分配给 _id
并随后存储计数来找到所有出现的 voteid
值 -- {$sum: 1}
in votes
.
然后,我们根据刚刚用votesid
创建的_id
排序,然后将结果投影到我们需要的形式——消除_id
并将前一组 _id
重新映射到 voteid
并允许在我们的结果中投票。
希望对您有所帮助。
我要实现的是对这些文档进行分组,
{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 驱动程序
好的,这将帮助您进行查询(计数)并将它们排序为 voteid
、
db.yourCollection.aggregate([{
$group: {
_id: '$voteid',
votes: {$sum: 1}
}
},
{
$sort: {
_id: 1
}
},
{
$project: {
_id: 0,
voteid: '$_id',
votes: 1
}
}
])
我们在这里所做的是首先在记录上应用 $group
运算符,并通过将 voteid
作为累加器对象分配给 _id
并随后存储计数来找到所有出现的 voteid
值 -- {$sum: 1}
in votes
.
然后,我们根据刚刚用votesid
创建的_id
排序,然后将结果投影到我们需要的形式——消除_id
并将前一组 _id
重新映射到 voteid
并允许在我们的结果中投票。
希望对您有所帮助。