我有两个型号 - 用户和标签。用户模型的一部分
module.exports = {
attributes: {
tags: {
collection: "tag",
via: "users"
}
}};
标签模型看起来像
module.exports = {
attributes: {
name: {
type: 'string',
required: true
},
users: {
collection: "user",
via: "tags"
},
}};
我需要按" users.length"对标签进行排序。 (每个标签可以有不同数量的用户)。我试过这个
Tag.find().populate('users').sort('users.length DESC').exec(function(err, tags){});
我也试过这样的事情
Tag.native(function (err, collection) {
if (err) return res.serverError(err);
collection.aggregate(
[
{ $sort : { users : -1 } }
], function (err, results) {
});
});
但我失败了。文档未按正确顺序排序。你可以帮我按你想要的文件分类吗?我也是Sails和Mongo的新人。我不知道我怎么能这样做。
P.S。
我使用sails-mongo适配器版本0.11.2
答案 0 :(得分:2)
不幸的是,到目前为止还没有办法做到这一点。
我建议在$ perl -e '/{/' # Beginning of pattern, no warning
$ perl -e '/.{/' # Doesn't follow alpha, no warning
$ perl -e '/x{3}/' # Valid quantifier, no warning
$ perl -e '/\x{/' # Part of special escape sequence \x{}, different warning
Missing right brace on \x{} in regex; marked by <-- HERE in m/\x{ <-- HERE / at -e line 1.
$ perl -e '/x{/' # Follows alpha, isn't a quantifier or special escape, warns
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/x{ <-- HERE / at -e line 1.
模型中维护count
字段,并在每次Tag
添加或删除User
时更新该字段。然后像使用Tag
作为排序键一样运行常规查询。如果您只需要count
信息(而不是Tag
),这样做还可以让您更快地查询,因为您可以跳过内部引用其他集合的users
调用。