【发布时间】:2017-06-23 20:47:32
【问题描述】:
谈到 NoSQL 和 Mongoose,我还是个新手。我一直在搜索,但无法真正找到我正在寻找的东西(这让我更难知道答案)。
基本上,我有一个用户正在添加的记录列表。这些记录包含一些数据,我想列出每个用户最新插入的消息。
我会用 SQL 编写;
SELECT * FROM records ORDER BY inserted_date GROUP BY user_id;
这将返回一个这样的集合;
[
{user: 2, insert_date: 2015-08-12T15:15:00, message: "Hi"},
{user: 3, insert_date: 2015-08-12T15:12:00, message: "Also hi"},
{user: 5, insert_date: 2015-08-12T15:14:00, message: "Not hi"}
]
我一直在环顾四周,找到了一些答案,但似乎没有用。
我试过了;
https://stackoverflow.com/a/7570091/1493455
还有其他一些类似的聚合事物;
Record.aggregate(
{},
{
$group: {
_id: '$user_id',
inserted: { $last: "$inserted" },
message: { $last: "$message" }
}
},
function(err, messages) {
console.log(err, messages);
}
);
我从另一个答案中复制了它 - 但我真的不明白它在做什么以及它甚至应该做什么。
我当然可以对每个用户使用排序和限制查询,但这似乎非常低效。
如果有人能指出我正确的方向,我会很高兴:)
【问题讨论】:
-
我刚才可能发现了一个重复的问题; stackoverflow.com/questions/29410749/…我过会再来看看。
标签: node.js mongodb mongoose aggregation-framework