我有一個檔案
{
propertyA: [
{ name: 'jim', group: 'a'}。
{ name: 'bob', group: 'a'}。
{ name: 'alice', group: 'b'}。
],
propertyB: [
{ group: 'a'/span>, numberOfTimes: 2 }
{ group: 'b', numberOfTimes: 6 }
]
}
我希望能用一個聚合體來實作的是
我希望能用一個聚合體來實作的是
{
result: [
{ name: 'jim', group: 'a', numberOfTimes: 2}。
{ name: 'bob', group: 'a', numberOfTimes: 2}。
{ name: 'alice', group: 'b', numberOfTimes: 6}。
]
有點卡住了,因為甚至不知道要搜索什么......任何幫助都將是感激的。
uj5u.com熱心網友回復:
查詢
- 解決方案不使用查找或unwind等 。
- 它是在檔案級別上進行的 。
- 對于 "propertyA "的每個成員,從propertyB的組中找到 并獲取次數
- 合并物件以增加次數 。
*上述內容是假設所有組都存在于propertyA 和屬性B中都存在。 如果你的組只存在于其中一個屬性中。 如果你能告訴我們如何處理它們
。db.collection.aggregate( [
{
"$project": {
"result": {
"$map": {
"input": "$propertyA",
"in": {
"$let": {
"vars": {
"nt": {
"$filter": {
"input": "$propertyB",
"條件": {
"$eq": [
"$pb.group",
"$p.group", "$pa.group".
]
},
"as": "pb" "pb"
}
}
},
"in": {
"$mergeObjects": [
"$pa",
{
"$arrayElemAt": [...
"$$nt",
0.
]
}
]
}
}
},
"as": "pa"。
}
},
"_id": 0
}
}
])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/324679.html
標籤:
