[英]MongoDB query using Mongoose
我有一个照片集,其中存储用户、标签、日期和照片 url。 我想要一个查询来为每个标签的用户返回 2 张最新照片。
例如
{user: 1, date: 1, url: a, tag: tag1}
{user: 1, date: 2, url: b, tag: tag1}
{user: 1, date: 3, url: c, tag: tag1}
{user: 1, date: 4, url: d, tag: tag2}
{user: 2, date: 1, url: e, tag: tag1}
{user: 3, date: 1, url: f, tag: tag1}
在用户 1 上运行查询应该返回
{user: 1, date: 1, url: a, tag: tag1}
{user: 1, date: 2, url: b, tag: tag1}
{user: 1, date: 4, url: d, tag: tag2}
我正在将 mongoose 与 NodeJ 一起使用。
询问
$setWindowFields
* MongoDB <5 的替代解决方案是按日期排序、按标签分组和切片以仅获取前 2 个。
aggregate(
[{"$match":{"$user" : 1}},
{"$setWindowFields":
{"partitionBy":"$tag",
"sortBy":{"date":1},
"output":{"rank":{"$rank":{}}}}},
{"$match":{"$expr":{"$lt":["$rank", 3]}}},
{"$unset":["rank"]}])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.