2016-11-04 105 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