簡體   English   中英

帆+蒙戈+水線。 按填充集合中的計數文檔排序

[英]Sails + Mongo + Waterline. Sort by count documents in populated collection

我有兩個模型-用戶和標簽。 用戶模型的一部分

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的新手。 而且我不知道該怎么做。

PS

我使用Sails-Mongo適配器版本0.11.2

不幸的是,到目前為止,尚無此方法。

我建議在Tag模型本身中維護一個count字段,並在User每次添加或刪除Tag 然后像執行count一樣作為排序鍵來運行普通查詢。 這樣做還可以讓您更快地查詢是否只需要Tag信息(而不是users ),因為您可以跳過內部引用另一個集合的populate()調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM