我有兩個集合 - “用戶”和“關注”。“Follows”僅包含具有“follower”欄位和“followee”欄位的檔案,表示用戶何時關注另一個用戶。我想要做的是能夠查詢用戶,但首先顯示我(或任何發出請求的用戶)關注的用戶。例如,如果我關注用戶“5”和“14”,當我搜索用戶串列時,我希望用戶“5”和“14”位于串列頂部,然后是串列中的其余用戶資料庫。
如果我首先查詢“Follows”集合中我關注的所有用戶并獲取這些用戶 ID 的陣列,有沒有一種方法可以使用 {$in: [userIDs]} 之類的內容進行排序?我不想過濾掉我不關注的用戶,我只想通過顯示我首先關注的用戶來對串列進行排序。
我為此使用了 nodejs 和 mongoose。任何幫助將不勝感激。謝謝!
uj5u.com熱心網友回復:
回答
db.users.aggregate([
{
$addFields: {
sortBy: {
$cond: {
if: {
$in: [ "$_id", [ 5, 14 ] ]
},
then: 0,
else: 1
}
}
}
},
{
$sort: {
sortBy: 1
}
},
{
$unset: "sortBy"
}
])
在這里測驗
如果你不想讓你出現在名單上,那么
db.users.aggregate([
{
$addFields: {
sortBy: {
$cond: {
if: {
$in: [ "$_id", [ 5, 14 ] ]
},
then: 0,
else: 1
}
}
}
},
{
$sort: {
sortBy: 1
}
},
{
$unset: "sortBy"
},
{
$match: {
"_id": { $ne: 1 }
}
}
])
在這里測驗
If you want to sort users first
db.users.aggregate([
{
$sort: {
_id: 1
}
},
{
$addFields: {
sortBy: {
$cond: {
if: {
$in: [
"$_id",
[
5,
14
]
]
},
then: 0,
else: 1
}
}
}
},
{
$sort: {
sortBy: 1,
}
},
{
$unset: "sortBy"
},
{
$match: {
"_id": {
$ne: 1
}
}
}
])
Test Here
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/335696.html
上一篇:填充貓鼬查詢時展平多個欄位
下一篇:在貓鼬中填充物件內的陣列
