我有一组记录,并尝试获取每一行的唯一记录,并且唯一记录是组,查询是
db.collection.aggregate([
{
$match : {
userId: 16,
userListId : ObjectId('5b7e85f956de7e6ead026e23') ,
}
},
{
$group:
{
_id: '$domain',
"websites": { $push: {
'_id' : '$_id',
'userId' : '$userId',
'userListId' : "$userListId",
'createdAt' : '$createdAt'
}}
}
}
]);
对于同一个域,我有4行
{
"_id" : ObjectId("5b7e55bb0f81ba2c5b0b54c8"),
"userId" : 16,
"userListId" : ObjectId("5b7e85f956de7e6ead026e23"),
"createdAt" : 1535006139565.0
},
{
"_id" : ObjectId("5b7e55bb0f81ba2c5b0b54a9"),
"userId" : 16,
"userListId" : ObjectId("5b7e85f956de7e6ead026e23"),
"createdAt" : 1535006139564.0
},
{
"_id" : ObjectId("5b7e55bb0f81ba2c5b0b54b4"),
"userId" : 16,
"userListId" : ObjectId("5b7e85f956de7e6ead026e23"),
"createdAt" : 1535006139565.0
},
{
"_id" : ObjectId("5b7e55bb0f81ba2c5b0b54c4"),
"userId" : 16,
"userListId" : ObjectId("5b7e85f956de7e6ead026e23"),
"createdAt" : 1535006139565.0
}
在上面的记录中,第二个记录是数据库中的第一个记录,我想将其放在第一个位置,该怎么做?
"_id" : ObjectId("5b7e55bb0f81ba2c5b0b54a9")
我想在第一位置获得以上记录
答案 0 :(得分:3)
您可以简单地通过$ sort运算符开始管道:
db.collection.aggregate([
{
$match: {
userId: 16,
userListId: ObjectId("5b7e85f956de7e6ead026e23"),
}
},
{
$sort: {
"createdAt": 1
}
},
{
$group: {
_id: "$domain",
"websites": {
$push: {
"_id": "$_id",
"userId": "$userId",
"userListId": "$userListId",
"createdAt": "$createdAt"
}
}
}
}
])
看到它正常工作here
注意:已根据@chridam建议进行了更新。谢谢。