嘿,我有一個如下所示的架構:
{
_id: 1
...
tokens: [1, 2, 3]
},
{
_id: 2
...
tokens: [4,5,6]
}
我想將所有專案的所有標記組合在一個陣列中,如下所示:
tokens: [1, 2, 3, 4, 5, 6]
我無法實作這一點我已經嘗試過了,但它沒有給我我想要的輸出:
users = await User.aggregate([
{
$group: {
_id: "$token",
token: { $push: "$token" },
},
},
{
$project: {
token: 1,
},
},
]);
uj5u.com熱心網友回復:
您可以將 group stage 與 $push 運算子結合使用。
例子:
{
$group:{ _id:null, tokens: { $push : "$tokens" } }
}
uj5u.com熱心網友回復:
方案一
$unwind- 將tokens陣列解構為多個檔案$group- 分組null并tokens使用$push.
db.collection.aggregate([
{
$unwind: "$tokens"
},
{
$group: {
_id: null,
tokens: {
"$push": "$tokens"
}
},
},
{
$project: {
tokens: 1
}
}
])
Mongo Playground 示例解決方案 1
解決方案2
$group- 分組null并tokens使用$push.$project-$reduce用于洗掉嵌套陣列,但將每個陣列中的值添加到tokens陣列欄位中。
db.collection.aggregate([
{
$group: {
_id: null,
tokens: {
"$push": "$tokens"
}
}
},
{
$project: {
tokens: {
$reduce: {
input: "$tokens",
initialValue: [],
in: {
$concatArrays: [
"$$value",
"$$this"
]
}
}
}
}
}
])
Mongo Playground 示例解決方案 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/396567.html
上一篇:如何用玩笑模擬多個呼叫鏈函式
下一篇:printf()是如何表達的?
