ALK
ALK

Reputation: 103

Get data from MongoDB with NodeJS

I am new in MongoDB and NodeJS development. I have read all what I find and probably am searching wrong. Please help me!

I have this db - Name: Shop, Documents: categories, products

This is db.collection('categories');

{
"_id" : { "$oid" : "5172d1daffdd81f3234d5f88" },
        "categories" : [ {
        "categories" : [ {
        "id" : "mens-clothing-suits",
                "image" : "categories/mens-clothing-suits.jpg",
                "name" : "Suits",
                "page_description" : "Shop Men's suits for business or pleasure. Enjoy from a variety of different styles and cuts.",
                "page_title" : "Mens Suits for Business and Casual",
                "parent_category_id" : "mens-clothing",
                "c_showInMenu" : true
        },
        {
        "id" : "mens-clothing-jackets",
                "image" : "categories/mens-clothing-sportscoats.png",
                "name" : "Jackets & Coats",
                "page_description" : "Shop Men's Jackets, Coats & Outerwear. Classic outdoor-tested garments with traditional styling details that provide comfort, insulation and ease of movement, whatever the weather.",
                "page_title" : "Men's Jackets Including Jackets & Blazzers",
                "parent_category_id" : "mens-clothing",
                "c_showInMenu" : true
        },
        {
        "id" : "mens-clothing-dress-shirts",
                "image" : "categories/mens-clothing-dress-shirts.jpg",
                "name" : "Dress Shirts",
                "page_description" : "Shop Men's dress shirts in a variety of colors and styles including striped, button down, non-iron & more", "page_title" : "Men's Dress Shirts including Striped, Button Down, Non-Iron & More",
                "parent_category_id" : "mens-clothing",
                "c_showInMenu" : true
        },
        {
        "id" : "mens-clothing-shorts",
                "image" : "categories/mens-clothing-shorts.png",
                "name" : "Shorts", "page_description" : "Shop Men's spring shorts in cotton. Variety of different fits.",
                "page_title" : "Men's Spring Shorts",
                "parent_category_id" : "mens-clothing",
                "c_showInMenu" : true
        },
        {
        "id" : "mens-clothing-pants",
                "image" : "categories/mens-clothing-pants.png",
                "name" : "Pants",
                "page_description" : "Shop Men's Trousers. Practical, easy-to-wear styles wherever you're headed. Check out famous rugged, long-lasting trousers, jeans, cargo pants and more.",
                "page_title" : "Men's Pants Including Khakis, Cargos, Trousers, Jeans & More",
                "parent_category_id" : "mens-clothing",
                "c_showInMenu" : true
        } ],
                "id" : "mens-clothing",
                "image" : "categories/mens-clothing-accessories.jpg",
                "name" : "Clothing",
                "page_description" : "Shop Men's Clothing. Relaxed, timeless classics you can rely on; from denim to corduroys and sweaters to shirts. Huge range of contemporary colours and eco-aware designs: great casualwear.",
                "page_title" : "Mens Clothing Including Suits, Tops, Bottoms & More",
                "parent_category_id" : "mens",
                "c_showInMenu" : true
        },
        {
        "categories" : [ {
        "id" : "mens-accessories-ties",
                "image" : "categories/mens-accessories-ties.png",
                "name" : "Ties", "page_description" : "Shop Mens's Ties for all occasions including business or casual.",
                "page_title" : "Men's Casual and Business Ties",
                "parent_category_id" : "mens-accessories",
                "c_showInMenu" : true
        },
        {
        "id" : "mens-accessories-gloves",
                "name" : "Gloves",
                "page_description" : "Shop Men'sGloves. Versatile, commuter, boot, oxford, deer and resolve gloves. All with famous long-lasting quality.",
                "page_title" : "Men's Gloves",
                "parent_category_id" : "mens-accessories",
                "c_showInMenu" : true
        },
        {
        "id" : "mens-accessories-luggage",
                "image" : "categories/mens-accessories-luggage.jpg",
                "name" : "Luggage",
                "page_description" : "Shop Men's Wheeled Luggage. Versatile, rugged suitcases, baggage, holdalls and shoulder bags. All with famous long-lasting quality.",
                "page_title" : "Men's Wheeled Luggage",
                "parent_category_id" : "mens-accessories",
                "c_showInMenu" : true
        } ],
                "id" : "mens-accessories",
                "name" : "Accessories",
                "page_description" : "Shop mens accessories including belts, wallets. gloves, hats, watches, luggage & more.",
                "page_title" : "Men's Accessories Belts, Wallets. Gloves, Hats, Watches, Luggage & More",
                "parent_category_id" : "mens",
                "c_showInMenu" : true
        } ],
        "id" : "mens",
        "name" : "Mens",
        "page_description" : "Men's range. Hard-wearing boots, jackets and clothing for unbeatable comfort day in, day out. Practical, easy-to-wear styles wherever you're headed.",
        "page_title" : "Men's Footwear, Outerwear, Clothing & Accessories",
        "parent_category_id" : "root",
        "c_showInMenu" : true
}

and for NodeJS I have ->

exports.index = function(req, res) {
	var _         = require("underscore");
	// var parseSchema = require('mongodb-schema');
	var mdbClient = require('mongodb').MongoClient;

mdbClient.connect("mongodb://localhost:27017/shop", function(err, db) {
		var collection = db.collection('categories');

		collection.find().toArray(function(err, items) {
			res.render("index", { 
			// 	// Underscore.js lib
			 	_     : _, 
				
			// 	// Template data
                title : "Hello World!",
			 	items : items
			 });


			db.close();
		});
});
	console.dir("Called findOne!");
};

I need to set in variables:

var categories = //all categories for example: Mens , Womens

var subCategories = //All subcategories for example: Clothing and etc.

What is the right method to reach each variable?

Thank You!

Upvotes: 0

Views: 251

Answers (1)

Shantanu Madane
Shantanu Madane

Reputation: 615

Demo of a Field:

db.getCollection('categories').find(
       {"categories.0.categories.image":"categories/mens-clothing-suits.jpg"},
       {"categories.categories.image":1});

Similarly you can do this for other fields

Upvotes: 1

Related Questions