大家好,
我試圖從聚合管道中的嵌套陣列中回傳一些隨機項,但是,我似乎無法弄清楚。來自 mongodb 的所有關于 random 的檔案都在檔案級別, $sample 將根據定義的樣本大小回傳一些檔案。我想從一個檔案中的陣列回傳一個亂數,然后在后續階段執行 $lookup 階段。下面的例子。
這是檔案
{
_id: "61005f388308a717883ad3d2",
...................
...................
"productLine": {
"product": [
"5fefa2556308ab102854baf7",
"5fefa2556308ab102854baf8",
"5fefa2556308ab102854baf9",
"5fefa2556308ab102854bafc",
"5fefa2556308ab102854bag7",
"5fefa2556308ab102854bah8",
"5fefa2556308ab102854bac5",
"5fefa2556308ab102854babc"
],
"created_count": 4,
"purchased": [],
"purchased_count": 0,
},
"following": {
"users": [],
"count": 0
},
"followers": {
"users": [],
"count": 0
},
"product_picture": "xxxxxxxxx",
....................
....................
....................
"__v": 0
}
所以在本檔案中,我在 productLine 中有 4 個產品 ID,我希望能夠創建一個階段來隨機選擇其中的 2 個,以便在接下來的階段我可以對這些 ID 執行 $lookup。所以基本上在階段之后,檔案看起來像這樣。
{
_id: "61005f388308a717883ad3d2",
...................
...................
"productLine": {
"product": [
"5fefa2556308ab102854baf8", // this would be chosen at random
"5fefa2556308ab102854baf9", // this would be chosen at random
],
"created_count": 4,
"purchased": [],
"purchased_count": 0,
},
"following": {
"users": [],
"count": 0
},
"followers": {
"users": [],
"count": 0
},
"product_picture": "xxxxxxxxx",
....................
....................
....................
"__v": 0
}
這個想法是當用戶選擇產品線時,它將從該產品線中隨機回傳兩個產品。
任何幫助,將不勝感激!!!
uj5u.com熱心網友回復:
您可以$sample在$lookup.
{
"$lookup": {
"from": "product",
"pipeline": [
{
"$project": {
_id: 1
}
},
{
"$sample": {
"size": 4
}
}
],
"as": "productLookup"
}
}
這是Mongo 游樂場供您參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/324825.html
上一篇:如何從此陣列中獲取所需的資料
