Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 仅从mongoose组/聚合操作返回原始文档_Mongodb_Mongoose_Mongodb Query_Aggregation Framework - Fatal编程技术网

Mongodb 仅从mongoose组/聚合操作返回原始文档

Mongodb 仅从mongoose组/聚合操作返回原始文档,mongodb,mongoose,mongodb-query,aggregation-framework,Mongodb,Mongoose,Mongodb Query,Aggregation Framework,我对一堆文档(书籍)进行了筛选+分组操作。分组仅返回共享相同图书id(名称)的图书的最新版本。下面的代码可以工作,但它不整洁,因为它返回冗余信息: return Book.aggregate([ { $match: generateMLabQuery(rawQuery) }, { $sort: { "published_date": -1 } }, { $group: {

我对一堆文档(书籍)进行了筛选+分组操作。分组仅返回共享相同
图书id
(名称)的图书的最新版本。下面的代码可以工作,但它不整洁,因为它返回冗余信息:

return Book.aggregate([
    { $match: generateMLabQuery(rawQuery) },
    {
        $sort: {
            "published_date": -1
        }
    },
    {
        $group: {
            _id: "$book_id",
            books: {
                $first: "$$ROOT"
            }
        }
    }
])
我最终得到一个如下所示的对象数组:

[{ _id: "aedrtgt6854earg864", books: { singleBookObject } }, {...}, {...}]
本质上,我只需要
singleBookObject
部分,它是原始文档(如果我只做了
$match
操作,我会得到它)。有没有办法去除聚合管道中多余的
\u id
书籍
部分?

您可以使用

Book.aggregate([
  { "$match": generateMLabQuery(rawQuery) },
  { "$sort": { "published_date": -1 }},
  { "$group": {
    "_id": "$book_id",
    "books": { "$first": "$$ROOT" }
  }},
  { "$replaceRoot": { "newRoot": "$books" } }
])