我对一堆文件(书)进行了筛选+分组操作。分组仅返回共享相同book_id
(名称)的书籍的最新版本。下面的代码可以正常工作,但是由于返回了多余的信息,因此很麻烦:
return Book.aggregate([
{ $match: generateMLabQuery(rawQuery) },
{
$sort: {
"published_date": -1
}
},
{
$group: {
_id: "$book_id",
books: {
$first: "$$ROOT"
}
}
}
])
我最终得到了一个看起来像这样的对象数组:
[{ _id: "aedrtgt6854earg864", books: { singleBookObject } }, {...}, {...}]
基本上,我只需要singleBookObject
部分,它就是原始文档(以及如果我仅执行$match
操作所得到的内容)。有没有办法消除聚合管道中的冗余_id
和books
部分?
答案 0 :(得分:1)
您可以使用$replaceRoot
Book.aggregate([
{ "$match": generateMLabQuery(rawQuery) },
{ "$sort": { "published_date": -1 }},
{ "$group": {
"_id": "$book_id",
"books": { "$first": "$$ROOT" }
}},
{ "$replaceRoot": { "newRoot": "$books" } }
])