我有一個名為“用戶”的集合。我正在傳遞用戶 ID 以獲取記錄。除此之外,我還需要另外 10 個 last updatedAt(DateTime) 記錄,不包括 userid 記錄,但要加在一起。因此,在這種情況下,總回傳結果將是 11。這可能使用相同的查詢嗎?我嘗試使用 Or 和查找,但無法使其按預期作業。任何幫助表示贊賞。
uj5u.com熱心網友回復:
編輯:你可以使用$facet,像這樣:
db.collection.aggregate([
{$sort: {date: -1}},
{$facet: {
byTate: [{$limit: 10}],
byUser: [{$match: {userId: 455845}}]
}
},
{$project: {
byDate: {
$filter: {
input: "$byDate",
as: "item",
cond: {$ne: ["$$item",{"$arrayElemAt": ["$byUser", 0]}]}
}
},
byUser: 1,
}
},
{
$project: {
byDate: {$slice: ["$byDate", 10]},
byUser: 1
}
}
])
你可以看到它在操場上作業。
在 userId: 455845 / 455845 之間切換以查看這兩種情況。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457738.html
