【发布时间】:2019-10-25 08:59:49
【问题描述】:
我是 MongoDB 新手,正在使用它处理 NodeJS 代码。
正如您在下面的代码中看到的那样,我正在对我的图书收藏运行一个 for 循环,以找出 query_book 的最新版本。
我知道这效率不高,想了解如何在 MongoDB 中为其编写聚合函数。
当前代码:
let result= {};
_.forEach(books, function(query_book)
{
if(!result[query_book.book_id])
{
result[query_book.book_id] = query_book
}
else if(result[query_book.book_id].book_version <
query_book.book_version)
{
result[query_book.book_id] = query_book
}
books 的数据对象:
[
{
"book_id": "ab12nld”,
"book_version": "0”,
"author": “Sam”,
“name”: “Sample Book”,
“comments”: “Done”
},
{
"book_id": "ab12nld”,
"book_version": "1",
"author": "Martin",
"name": "Sample Book",
“comments”: “In Progress”
},
{
"book_id": "ab12nld”,
"book_version": "2",
"author": "Roy",
"name": "Sample Book",
“comments”: “To-Do”
}
]
[
{
"book_id": "bcj123n”,
"book_version": "0”,
"author": “Don”,
“name”: “Another Book”,
“comments”: “Done”
},
{
"book_id": "bcj123n”,
"book_version": "1",
"author": "Ray",
"name": "Another Book",
“comments”: “In Progress”
},
{
"book_id": "bcj123n”,
"book_version": "2",
"author": "Max",
"name": "Another Book",
“comments”: “To-Do”
}
]
在这种情况下,我想为我的输入book_id 获取最大值为book_version 的对象,即ab12nld:
{
"book_id": "ab12nld”,
"book_version": "2",
"author": "Roy",
"name": "Sample Book",
“comments”: “To-Do”
}
【问题讨论】:
-
你的 for 循环有问题,你似乎没有使用
i。也许发布您想要的输入和输出或更新该循环以工作。 -
@thomasin:我已经编辑了循环并添加了所需的输出。
标签: database mongodb aggregate