2016-11-04 109 views
1

對於mongodb是完全新的,我試圖以我需要的格式獲取某些報告的查詢。如何查詢mongo以我想要的格式顯示結果?

這裏是我的資產保全的結果:

db.getCollection('Asset').find({}) 

結果:

/* 1 */ 
{ 
    "_id" : ObjectId("58176238f23ee4040a48846c"), 
    "AssetTypeId" : "58176225f23ee4040a48846b", 
    "AssetTypeName" : "Chairs", 
    "Fields" : [ 
     { 
      "_id" : "5770ae6cf500fd7675c234c5", 
      "Title" : "Asset Name", 
      "Value" : "Fancy Chair" 
     }, 
     { 
      "_id" : "576b7593f500fd7675c234b9", 
      "Title" : "Status", 
      "Value" : "Missing" 
     }, 
     { 
      "_id" : "57b2b52b31f7c7d80db34a23", 
      "Title" : "Location", 
      "Value" : "Office") 
     } 
    ] 
} 

/* 2 */ 
{ 
    "_id" : ObjectId("5817638ff23ee4040a48846e"), 
    "AssetTypeId" : "58176225f23ee4040a48846b", 
    "AssetTypeName" : "Chairs", 
    "Fields" : [ 
     { 
      "_id" : "5770ae6cf500fd7675c234c5", 
      "Title" : "Asset Name", 
      "Value" : "Basic Chair" 
     }, 
     { 
      "_id" : "576b7593f500fd7675c234b9", 
      "Title" : "Status", 
      "Value" : "Stores" 
     }, 
     { 
      "_id" : "57b2b52b31f7c7d80db34a23", 
      "Title" : "Location", 
      "Value" : "Home") 
     } 
    ] 
} 

/* 3 */ 
{ 
    "_id" : ObjectId("581767f3f23ee4040a488471"), 
    "AssetTypeId" : "5817678ff23ee4040a488470", 
    "AssetTypeName" : "Table", 
    "Fields" : [ 
     { 
      "_id" : "5770ae6cf500fd7675c234c5", 
      "Title" : "Asset Name", 
      "Value" : "Fancy Table" 
     }, 
     { 
      "_id" : "576b7593f500fd7675c234b9", 
      "Title" : "Status", 
      "Value" : "Active" 
     }, 
     { 
      "_id" : "57b2b52b31f7c7d80db34a23", 
      "Title" : "Location", 
      "Value" : "Office") 
     } 
    ] 
} 

這是最終的結果我想從查詢得到:

[ 
{"Asset Name":"Fancy Chair", "Status":"Missing","Location":"Office","AssetTypeName":"Chairs"}, 
{"Asset Name":"Basic Chair", "Status":"Stores","Location":"Office","AssetTypeName":"Chairs"}, 
{"Asset Name":"Fancy Table", "Status":"Active","Location":"Office","AssetTypeName":"Table"} 
] 
+0

請添加任何你試過到目前爲止並通過迭代的結果,並創建對象的一個​​新的數組d格式有人會和你一起合作,這樣做會吸引更多的人。 – Veeram

+0

這是我得到的: – bobbinson

+0

db.getCollection('Asset')。find({},{'Fields.Title':1,'Fields.Value':1,「AssetTypeName」:1}); – bobbinson

回答

0

您只需要將mongodb 資產結果轉換爲您的最愛

更MongoDB的方式是使用cursor.map方法:

db.Asset.find().map(function(asset){ 
    var result = {AssetTypeName: asset.AssetTypeName}; 
    for (var f=0;f<asset.Fields.length;f++){ 
     var field = asset.Fields[f]; 
     result[field.Title] = field.Value; 
    } 
    return result; 
}); 
+0

我認爲這是唯一的方法,它不能在查詢中輸出?只是爲了節省構建報告的時間,而不是通過JavaScript將結果解析爲正確的格式。 – bobbinson

+0

我添加了更多以mongo爲中心的方法,但應該具有相同的效果 –

+0

嘗試使用cursor.map方法,但我在嘗試運行它時收到「錯誤:第3行:意外的標記:」。 – bobbinson