我有一個包含字符串數組的mongo文檔,我需要將此特定數組字符串轉換爲包含鍵值對的數組。以下是我對它的一些看法。將mongo數組轉換爲具有鍵值對的對象
{
"_id" : ObjectId("57e3720836e36f63695a2ef2"),
"platform" : "A1",
"available" : {
"Community" : {
"attributes" : {
"type" : {
"values" : [
"well-known",
"simple",
"complex"
],
"defaultValue" : "well-known"
},
[......]
}
當前查詢:
templateAttributes.find({platform:"V1"}).map(function(c){
//instantiate a new array
var optionsArray = [];
for (var i=0;i< c['available']['Community']['attributes']['type']['values'].length; i++){
optionsArray[i] = {}; // creates a new object
optionsArray[i].label = c['available']['Community']['attributes']['type']['values'][i];
optionsArray[i].value = c['available']['Community']['attributes']['type']['values'][i];
}
return optionsArray;
})[0];
結果:
[{label:"well-known", value:"well-known"},
{label:"simple", value:"simple"},
{label:"complex", value:"complex"}]
是我的做法效率不夠高,或者是有沒有辦法來優化上面的查詢得到同樣的期望的結果?
需要在MongoDB上做什麼具體的原因? –
不。沒有具體原因需要在mongo方面完成。由於我在流星中使用這個查詢,所以這個查詢在內存中運行(mini-mongo)。 – blueren
@bluereen好的。然後聚合是解決方案。請記住'$ unwind'會乘以結果集大小array.length times。因此,以前使用'$ project'只需保留必需的字段,也許只有'值'。 –