如何加入集合并对其排序,同时在MongoDB中限制结果
假设我有两个集合,其中每个文档可能如下所示: 收集1:如何加入集合并对其排序,同时在MongoDB中限制结果,mongodb,sorting,paging,nosql,Mongodb,Sorting,Paging,Nosql,假设我有两个集合,其中每个文档可能如下所示: 收集1: target: _id, comments: [ { _id, message, full_name }, ... ] 收集2: user: _id, full_name, username 我通过$slice浏览评论,假设我使用前25个条目。 从这些条目中,我需要
target:
_id,
comments:
[
{ _id,
message,
full_name
},
...
]
收集2:
user:
_id,
full_name,
username
我通过$slice浏览评论,假设我使用前25个条目。
从这些条目中,我需要相应的用户名,这是我从第二个集合中收到的。我想要的是按照引用用户名对评论进行排序。问题是我无法将用户名添加到评论中,因为它们可能会经常更改,如果是这样,我需要更新所有目标文档,其中包含旧用户名。
我只能想象一种方法来解决这个问题。读出整个全名并在用户集合中查询。结果是可排序的,但不分页,因此使用大型文档进行排序需要大量资源
这个问题我有什么遗漏吗
提前感谢如果注释是嵌入式数组,则必须在客户端对注释数组进行排序,除非按排序顺序存储。您的应用程序对用户名的要求迫使您要么读取所有发表评论的用户的用户名进行排序,要么将用户名存储在评论中,并进行(更)困难和昂贵的更新 除非可以按排序顺序返回文档,否则排序和分页不起作用。您应该考虑一个不同的模式,其中注释形成一个单独的集合,以便您可以按排序顺序返回它们并对它们进行分页。在每个注释中存储用户名,以便于在MongoDB端进行排序。根据应用程序的使用模式,这可能更适合您
对用户名进行排序并期望/允许用户名频繁更改似乎也很奇怪。如果你能放弃这些要求,你的生活就会变得更轻松:d你在用猫鼬吗?