我query在 mongodb 中有一個集合,其中包含以下格式的檔案:
{
_id : ObjectId("61aced92ede..."),
query : "How to solve...?",
answer : []
is_solved : false
}
現在,我想過濾具有以下條件的檔案
過濾所有未解決的檔案。(
is_solved : true)過濾“n”個已解決的檔案數。
因此,該結果將包含所有未解決的檔案,并且陣列中只有 10 個已解決的檔案。
uj5u.com熱心網友回復:
您可以使用此聚合查詢:
- 首先使用$facet創建兩種方式:檔案已解決,檔案未解決。
- 進入每種方式做必要的
$match和$limit解決的檔案。 - 然后使用 連接值
$concatArrays。
db.collection.aggregate([
{
"$facet": {
"not_solved": [
{
"$match": {
"is_solved": false
}
}
],
"solved": [
{
"$match": {
"is_solved": true
}
},
{
"$limit": 10
}
]
}
},
{
"$project": {
"result": {
"$concatArrays": [
"$not_solved",
"$solved"
]
}
}
}
])
這里的例子我過去常常$limit: 1看更容易。
此外,如果需要,您可以$unwind在聚合的末尾添加以獲取頂級值,如本例
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/340240.html
標籤:MongoDB
