简体   繁体   中英

How to write condtion for select data using mongoose(express.js)?

For Example i have given 5objects which is mobile seller list .i want to select only who are all selling Brand:Nokia,Modelname:Lumia,Submodel:Lumia 735 TS,Lumia 510 how can i write condtion in express and if user select Brand:Nokia,Modelname:Lumia,Submodel:Lumia 735 TS how can i write condtion in express i have given my controller pls help me out im struggling last 3 days. stored seller list in mongodb

object 1

{
    "_id": {
        "$oid": "56a63a968411612f36ab4b5d"
    },
    "default": [],
    "Categories": [
        {
            "models": [
                {
                    "submodel": [
                        {
                            "price": "7500",
                            "name": "Lumia 735 TS"
                        },
                        {
                            "price": "1000",
                            "name": "Lumia 510"
                        }
                    ],
                    "name": "Lumia"
                }
            ],
            "brandname": "Nokia",
            "id": "986745"
        }
    ],
    "Storename": "Poorvika Mobiles",
    "__v": 0
}

object 2:

{
    "_id": {
        "$oid": "56a63b418411612f36ab4b5e"
    },
    "default": [],
    "Categories": [
        {
            "models": [
                {
                    "submodel": [
                        {
                            "price": "7500",
                            "name": "Lumia 735 TS"
                        },
                        {
                            "price": "8500",
                            "name": "Lumia 830"
                        }
                    ],
                    "name": "Lumia"
                }
            ],
            "brandname": "Nokia",
            "id": "986745"
        }
    ],
    "Storename": "Nokia Store",
    "__v": 0
}

object 3:

{
    "_id": {
        "$oid": "56a63b738411612f36ab4b5f"
    },
    "default": [],
    "Categories": [
        {
            "models": [
                {
                    "submodel": [
                        {
                            "price": "7500",
                            "name": "Lumia 735 TS"
                        },
                        {
                            "price": "8500",
                            "name": "Lumia 830"
                        }
                    ],
                    "name": "Lumia"
                },
                {
                    "submodel": [
                        {
                            "price": "12000",
                            "name": "Asha Asn01"
                        },
                        {
                            "price": "5000",
                            "name": "Nokia Asha Dual sim"
                        }
                    ],
                    "name": "Asha"
                }
            ],
            "brandname": "Nokia",
            "id": "986745"
        }
    ],
    "Storename": "Sun Mobiles",
    "__v": 0
}

object 4:

{
    "_id": {
        "$oid": "56a63b7d8411612f36ab4b60"
    },
    "default": [],
    "Categories": [
        {
            "models": [
                {
                    "submodel": [
                        {
                            "price": "7500",
                            "name": "Lumia 735 TS"
                        },
                        {
                            "price": "1000",
                            "name": "Lumia 510"
                        }
                    ],
                    "name": "Lumia"
                },
                {
                    "submodel": [
                        {
                            "price": "12000",
                            "name": "Asha Asn01"
                        },
                        {
                            "price": "5000",
                            "name": "Nokia Asha Dual sim"
                        }
                    ],
                    "name": "Asha"
                }
            ],
            "brandname": "Nokia",
            "id": "986745"
        }
    ],
    "Storename": "Mobile Corner",
    "__v": 0
}

object 5:
{
    "_id": {
        "$oid": "56a63b948411612f36ab4b61"
    },
    "default": [],
    "Categories": [
        {
            "models": [
                {
                    "submodel": [
                        {
                            "price": "8500",
                            "name": "Trend 840"
                        },
                        {
                            "price": "10000",
                            "name": "Galaxy Note Duos"
                        }
                    ],
                    "name": "Galaxy"
                }
            ],
            "brandname": "Samsung",
            "id": "144745"
        }
    ],
    "Storename": "Asath Mobile Center",
    "__v": 0
}


object 6:

{
    "_id": {
        "$oid": "56a63ba48411612f36ab4b62"
    },
    "default": [],
    "Categories": [
        {
            "models": [
                {
                    "submodel": [
                        {
                            "price": "8500",
                            "name": "Trend 840"
                        },
                        {
                            "price": "10000",
                            "name": "Galaxy Note Duos"
                        }
                    ],
                    "name": "Galaxy"
                },
                {
                    "submodel": [
                        {
                            "price": "6700",
                            "name": "Asha 230"
                        },
                        {
                            "price": "8500",
                            "name": "Asha Asn01"
                        }
                    ],
                    "name": "Asha"
                }
            ],
            "brandname": "Samsung",
            "id": "144745"
        }
    ],
    "Storename": "Zigzag Mobiles",
    "__v": 0
}

object 7:   

{
    "_id": {
        "$oid": "56a63baf8411612f36ab4b63"
    },
    "default": [],
    "Categories": [
        {
            "models": [
                {
                    "submodel": [
                        {
                            "price": "7500",
                            "name": "Lumia 735 TS"
                        },
                        {
                            "price": "1000",
                            "name": "Lumia 510"
                        }
                    ],
                    "name": "Lumia"
                },
                {
                    "submodel": [
                        {
                            "price": "12000",
                            "name": "Asha Asn01"
                        },
                        {
                            "price": "5000",
                            "name": "Nokia Asha Dual sim"
                        }
                    ],
                    "name": "Asha"
                }
            ],
            "brandname": "Nokia",
            "id": "986745"
        },
        {
            "models": [
                {
                    "submodel": [
                        {
                            "price": "8500",
                            "name": "Trend 840"
                        },
                        {
                            "price": "10000",
                            "name": "Galaxy Note Duos"
                        }
                    ],
                    "name": "Galaxy"
                },
                {
                    "submodel": [
                        {
                            "price": "6700",
                            "name": "Asha 230"
                        },
                        {
                            "price": "8500",
                            "name": "Asha Asn01"
                        }
                    ],
                    "name": "Asha"
                }
            ],
            "brandname": "Samsung",
            "id": "144745"
        }
    ],
    "Storename": "Mobile Bazar",
    "__v": 0
}

Controller:

exports.shopByPhone = function(req, res) { 

    Shop.find().sort('-created').populate('user', 'displayName').exec(function(err, shops) {
        if (err) {
            return res.status(400).send({
                message: errorHandler.getErrorMessage(err)
            });
        } else {
            res.jsonp(shops);
        }
    });
};

condtion 1: I want to filter data who are selling only

Brand : Nokia

Model : Lumia

Submodel : Lumia 735 TS,Lumia 510

If Above condtion matches it should display oly these 3 sellers

1.Poorvika Mobiles

2.Mobile Corner

3.Mobile Bazar

these 3 shops only selling

Brand : Nokia

Model : Lumia

Submodel : Lumia 735 TS,Lumia 510

Condtion 2:

I want to filter data who are selling only

Brand : Nokia

Model : Lumia

Submodel : Lumia 735 TS

If Above condtion matches it should display oly these 3 sellers

1.Poorvika Mobiles

2.Mobile Corner

3.Mobile Bazar

these 3 shops only selling

Brand : Nokia

Model : Lumia

Submodel : Lumia 735 TS,Lumia 510

Try

find({
    'Categories.brandname':'Nokia', 
    'Categories.models.name':'Lumia', 
    'Categories.models.submodel.name':
        {'$all':['Lumia 510', 'Lumia 735 TS']}
})

$all will give you stores that sell both Lumia 510 and Lumia 735. if you need query that selects either one of these models, use $in instead.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM