要求是將所有sales陣列屬性轉換為具有第一個元素的數量值的物件。集合名稱是branches,示例資料如下。
[
{
"_id": 111,
"recs": [
{
"date": "01-01-2021",
"sales": [
{
"quantity": {
"P": 14,
"K": 0,
"U": 0
}
}
]
},
{
"date": "02-01-2021",
"sales": [
{
"quantity": {
"P": 23,
"K": 0,
"U": 0
}
}
]
}
]
},
{
"_id": 21,
"recs": [
{
"date": "01-01-2021",
"sales": [
{
"quantity": {
"P": 11,
"K": 0,
"U": 0
}
}
]
},
{
"date": "02-01-2021",
"sales": [
{
"quantity": {
"P": 31,
"K": 0,
"U": 0
}
}
]
}
]
}]
預期回應如下。
[
{
"_id": 111,
"recs": [
{
"date": "01-01-2021",
"sale": {
"P": 14,
"K": 0,
"U": 0
}
}
]
}]
我試過了$map,$addFields但我絕對找不到解決方案。
uj5u.com熱心網友回復:
在$map中,您需要:
$first查詢陣列sales.quantity中的第一個物件。recs.sales$mergeObject將recs陣列中的當前檔案與 (1) 中的檔案合并。
db.collection.aggregate([
{
"$project": {
_id: 1,
recs: {
"$map": {
"input": "$recs",
"in": {
"$mergeObjects": [
"$$this",
{
sales: {
$first: "$$this.sales.quantity"
}
}
]
}
}
}
}
}
])
示例 Mongo Playground
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/424002.html
標籤:mongodb 猫鼬 mongodb查询 聚合框架 猫鼬模式
