[英]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.