[英]$unwind multiple arrays present in the embedded documents and show each array as single document as output in mongoDB
參考下面的代碼。 在此,現場場景是一個嵌入式文檔,其中包含 arrays,我想在 output 中將每個數組展示為單個文檔。 請注意,每個數組都包含嵌入的文檔,因此獲取從中提取字段的代碼也會很有幫助。 我沒有使用 java 進行查詢。 將使用將集成的外部 BI 應用程序。我還應該提到我正在使用 NoSQLBooster 為 MongoDB 應用程序創建這些查詢。
{
"_id": {
"$oid": ""
},
"organisationId": "",
"bcpId": "",
"bcpName": "",
"bcpDescription": "",
"biaEntity": {},
"version": "0.01",
"status": "PENDING",
"primaryBridgeNumber": "1",
"alternateBridgeNumber": "2",
"scenario": [{
"_id": {
"$oid": "5e3ab709367d2c5f5826c6fd"
},
"scenario": "",
"strategies": [{
"mdmStrategy": {},
"strategy": {
"pSIStrategyDetails": {
"scenarioName": "",
"strategyName": "",
"rto": "",
"sustainablePeriod": {
},
"description": "1",
"primaryContact": {
},
"secondaryContact": {
},
"recoverySite": {
}
},
"pSICriticalStaff": {},
"specialRequirement": [{
}, {
}, {
}, {
}, {
}]
},
"createdOn": {},
"updatedOn": {}
}, {
"mdmStrategy": {},
"strategy": {
"pSIStrategyDetails": {},
"pSICriticalStaff": {},
"specialRequirement": [{
},
{
},
{
},
{
},
{
}]
},
"createdOn": {},
"updatedOn": }
}],
"description": "",
"status": "Active",
"createdOn": {},
"updatedOn": {}
}],
"updatedOn": {},
"createdOn": {},
"business_owner_id": {},
"bc_coordinator_id": {},
"backup_business_owner_id": {},
"backup_business_coordinator_id": {},
"sme_id": {},
"_class": "com.bcm.bcp.api.model.BcmBcpEntity"
}
預期 output:
{{
"bcpId": "",
"bcpName": "",
"bcpDescription": "",
"version": "0.01",
"status": "PENDING",
"scenario.scenario":"---",
"scenario.strategies.strategy.strategyName":"---",
"scenario.strategies.strategy.rto":"---",
etc...
}{
"bcpId": "",
"bcpName": "",
"bcpDescription": "",
"version": "0.01",
"status": "PENDING",
"scenario.scenario":"---",
"scenario.strategies.strategy.strategyName":"---",
"scenario.strategies.strategy.rto":"---",
etc...
}{
"bcpId": "",
"bcpName": "",
"bcpDescription": "",
"version": "0.01",
"status": "PENDING",
"scenario.scenario":"---",
"scenario.strategies.strategy.strategyName":"---",
"scenario.strategies.strategy.rto":"---",
etc...
}}
"scenario.scenario":"---","scenario.strategies.strategy.strategyName":"---", "scenario.strategies.strategy.rto":"---",
將來自 arrays 因此 output 將是數組中存在的元素數
你希望這是你想要的:
db.collection.aggregate([
{
$unwind: "$scenario"
},
{
$unwind: "$scenario.strategies"
},
{
$project: {
bcpId: 1,
bcpName: 1,
bcpDescription: 1,
version: 1,
status: 1,
scenario: {
scenario: 1,
strategies: {
strategy: {
pSIStrategyDetails: {
rto: 1,
strategyName: 1
}
}
}
}
}
}
])
Output:
[
{
"_id": ObjectId("5a934e000102030405000000"),
"bcpDescription": "",
"bcpId": "",
"bcpName": "",
"scenario": {
"scenario": "",
"strategies": {
"strategy": {
"pSIStrategyDetails": {
"rto": "",
"strategyName": ""
}
}
}
},
"status": "PENDING",
"version": "0.01"
},
{
"_id": ObjectId("5a934e000102030405000000"),
"bcpDescription": "",
"bcpId": "",
"bcpName": "",
"scenario": {
"scenario": "",
"strategies": {
"strategy": {
"pSIStrategyDetails": {}
}
}
},
"status": "PENDING",
"version": "0.01"
}
]
說明:您需要使用 2 個$unwind
運算符,因為它類似於 arrays 的 arrays 和一個$project
運算符來僅顯示您需要的那些字段。
PS - 這個問題還不清楚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.