【发布时间】:2020-01-09 21:47:56
【问题描述】:
我有几个相关的集合,我们称它们为父子集。
我的问题是我正在尝试按 child.name 字段对父文档进行排序。每个子文档也有一个 parentId 字段。
我创建了一个投影数组,它是子 _id 到名称的映射,并且按照我想要的排序顺序(按名称按字母顺序排列)。
即
子文件
[
{_id: "GiXtSJqg22aYf6h7r", name: "Allen"}
{_id: "rRCiqcEAsDaDeJYL3", name: "Bob"}
{_id: "bP2kKbsofyqKjp9Zq", name: "Chris"}
{_id: "8so7KNeTwQGbLvwxo", name: "Darien"}
{_id: "XZ7kMDSjae82ddi7p", name: "Edgar"}
{_id: "k5j8LWTbWEStNhK5p", name: "Sally"}
]
然后我希望返回一些按 child.name 排序的父文档,如上所示。父母有一个childId,只是没有child.Name。所以我想我应该能够通过映射来解决这个问题。
有没有办法像下面这样..
Parents.find({}, { sort: {childId: ORDER_OF_MAPPING._id} }
所以排序顺序是“根据映射顺序升序”。
我希望在没有聚合的情况下执行此操作,因为我正在使用 Meteor Publish 方法返回我的光标。
有什么想法吗?
【问题讨论】:
-
抱歉 - 我认为如果不进行聚合,它就不会成功...
-
尼克,有没有关于如何使用聚合来做到这一点的指针?
-
您的子对象是否在另一个集合中?在这种情况下,您应该首先研究如何在聚合语句中访问其他集合(我什至不知道这是否可能)。请在此处发布您的发现!谢谢!
标签: javascript mongodb sorting meteor