garima
garima

Reputation: 5244

MongoDb query to access array json

EDIT:

INPUT : nodes DB is

     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"
            },

        ]
    }
])

Input:

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
  });
}

Result:

 [ [ { 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' } ] ]

Problem: Result required is only NAME parameters in an array.How the query should be modified?

Upvotes: 0

Views: 92

Answers (1)

garima
garima

Reputation: 5244

Mongo Query:-

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

Mongo Result :-

{
    "result" : [
        {
            "TEMPLATE_NAME" : [
                "Brand",
                "Account",
                "Price"
            ]
        }
    ],
    "ok" : 1
}

Upvotes: 1

Related Questions