gpt4 book ai didi

node.js - sails +蒙戈+水线。按填充集合中的文档数排序

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:40 29 4
gpt4 key购买 nike

我有两个模型 - 用户和标签。用户模型的一部分

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 的新人。我不知道如何才能做到这一点。

附注

我使用 sails-mongo 适配器版本 0.11.2

最佳答案

不幸的是,目前还没有办法做到这一点。

我建议在 Tag 模型本身中维护一个 count 字段,并在每次 User 添加或删除 时更新它标记。然后运行普通查询,就像使用 count 作为排序键一样。如果您只需要 Tag 信息(而不是 user),这样做还可以让您更快地查询,因为您可以跳过 populate() 调用它在内部引用另一个集合。

关于node.js - sails +蒙戈+水线。按填充集合中的文档数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31557230/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com