2015-05-21 3 views
0

EDIT:MongoDb запрос для доступа к массиву JSon

INPUT: узлы БД

 db.nodes.insert([ 
    { "ACTIVE" : 1, 
     "GEOLOCATION": { 
      "GEO_CODE": [], 
      "ACTIVE_GEOLOCATION": false 
     }, 

     "META": { 
      "CATEGORY": "levis", 
      "DESCRIPTION": "dsad", 
      "PRIVACY": "PUBLIC", 
      "TEMPLATE_NAME": "B", 

      "TEMPLATE_GROUP": "Product", 
      "KEYWORDS": [ 
       "sda" 
      ], 
      "CREATEDBY": "", 
      "SUBCATEGORY": "Blue", 
      "PRODUCT_TEMPLATE_TYPE": "Consumable", 
      "UOM": "", 
      "TEMPLATE_SUBGROUP": "" 
     }, 
     "VARIENTS": [ 
      { 
       "COMMENT": "Demo", 
       "INDEX": 0, 
       "NAME": "Brand", 
       "IS_PARENT": false, 
       "DATATYPE": "Text", 
       "ACCESS": "PUBLIC", 
       "PARENT_VARIENT": "Parem", 
       "TYPE": "PERMANENT" 
      }, 
      { 
       "COMMENT": "Demo", 
       "INDEX": 0, 
       "NAME": "Account", 
       "IS_PARENT": false, 
       "DATATYPE": "Text", 
       "ACCESS": "PUBLIC", 
       "PARENT_VARIENT": "Parem", 
       "TYPE": "PERMANENT" 
      }, 
      { 
       "COMMENT": "Demo", 
       "INDEX": 0, 
       "NAME": "Price", 
       "IS_PARENT": false, 
       "DATATYPE": "Text", 
       "ACCESS": "PUBLIC", 
       "PARENT_VARIENT": "Parem", 
       "TYPE": "PERMANENT" 
      }, 

     ] 
    } 
]) 

Вход:

if (Meteor.isServer) { 


    var nodeDB = new Meteor.Collection('nodes'); 
    Meteor.startup(function() { 
    // code to run on server at startup 
    }); 

    var p1=nodeDB.find({"ACTIVE" : 1, "VARIENTS.ACCESS" : "PUBLIC"}, { "VARIENTS.NAME": 1, _id : 0 }); 
    var p2=p1.fetch(); 
    var arr1=[]; 
    var arr2=[]; 
    for (i=0;i <p2.length;i++) 
    { 
     //console.log(p2[i].VARIENTS); 
     arr1[i]=p2[i].VARIENTS; 

    } 
    var dict=(arr1[1]); 
// console.log(x.length); 

console.log(arr1.NAME); 

    Meteor.startup(function() { 
    // code to run on server at startup 
    }); 
} 

Результат:

[ [ { COMMENT: 'Demo', 
I20150521-15:50:47.855(5.5)?  INDEX: 0, 
I20150521-15:50:47.856(5.5)?  NAME: 'Brand', 
I20150521-15:50:47.856(5.5)?  IS_PARENT: false, 
I20150521-15:50:47.856(5.5)?  DATATYPE: 'Text', 
I20150521-15:50:47.856(5.5)?  ACCESS: 'PUBLIC', 
I20150521-15:50:47.856(5.5)?  PARENT_VARIENT: 'Parem', 
I20150521-15:50:47.856(5.5)?  TYPE: 'PERMANENT' }, 
I20150521-15:50:47.856(5.5)?  { COMMENT: 'Demo', 
I20150521-15:50:47.857(5.5)?  INDEX: 0, 
I20150521-15:50:47.857(5.5)?  NAME: 'Account', 
I20150521-15:50:47.857(5.5)?  IS_PARENT: false, 
I20150521-15:50:47.857(5.5)?  DATATYPE: 'Text', 
I20150521-15:50:47.857(5.5)?  ACCESS: 'PUBLIC', 
I20150521-15:50:47.857(5.5)?  PARENT_VARIENT: 'Parem', 
I20150521-15:50:47.857(5.5)?  TYPE: 'PERMANENT' }, 
I20150521-15:50:47.857(5.5)?  { COMMENT: 'Demo', 
I20150521-15:50:47.858(5.5)?  INDEX: 0, 
I20150521-15:50:47.858(5.5)?  NAME: 'Price', 
I20150521-15:50:47.858(5.5)?  IS_PARENT: false, 
I20150521-15:50:47.858(5.5)?  DATATYPE: 'Text', 
I20150521-15:50:47.858(5.5)?  ACCESS: 'PUBLIC', 
I20150521-15:50:47.858(5.5)?  PARENT_VARIENT: 'Parem', 
I20150521-15:50:47.859(5.5)?  TYPE: 'PERMANENT' } ] ] 

Проблема: Требуется Результат только параметры NAME в массиве. Как запрос sh изменить?

ответ

1

Монго Запрос: -

db.nodes.aggregate([ 
{"$group": {"_id": "$VARIENTS.NAME"}}, 
{"$project": {"_id": 0, "TEMPLATE_NAME": "$_id"}} 
]); 

Монго Результат: -

{ 
    "result" : [ 
     { 
      "TEMPLATE_NAME" : [ 
       "Brand", 
       "Account", 
       "Price" 
      ] 
     } 
    ], 
    "ok" : 1 
} 
Смежные вопросы