使用Express,Mongoose搜索嵌套的MongoDB文档

问题描述 投票:1回答:1

我想搜索邮递员发送的具有stepPath = url的_id。下面是嵌套的文档结构

[
{
    "_id": "5ebf028e989a2e2628d9d3f6",
    "funnelName": "Mortgage Leads1",
    "group": "Mortgage",
    "category": "Finance",
    "funnelStep": [
        {
            "viewsStorage": [
                {
                    "_id": "5ebf028e989a2e2628d9d3f8",
                    "viewsCounter": {
                        "currentDate": "2000-12-31T18:30:00.000Z",
                        "viewsNo": 0
                    }
                }
            ],
            "_id": "5ebf028e989a2e2628d9d3f7",
            "stepType": "Advertorial",
            "stepName": "Angle Ver 1",
            "stepPath": "google12.com",
            "isTracking": true
        }
    ],
    "__v": 0
},
{
    "_id": "5ec15febb8a83019bc966932",
    "funnelName": "Mortgage Leads",
    "group": "Mortgage",
    "category": "Finance",
    "funnelStep": [
        {
            "viewsStorage": [
                0,
                0
            ],
            "_id": "5ec15febb8a83019bc966933",
            "stepType": "Advertorial",
            "stepName": "Angle Ver 1",
            "stepPath": "google.com",
            "isTracking": false
        },
        {
            "viewsStorage": [
                1,
                0
            ],
            "_id": "5ec15febb8a83019bc966934",
            "stepType": "Optin",
            "stepName": "21 Day Plan",
            "stepPath": "fb.com",
            "isTracking": true
        },
        {
            "viewsStorage": [
                2,
                0
            ],
            "_id": "5ec15febb8a83019bc966935",
            "stepType": "Checkout",
            "stepName": "Checkout Ver 1",
            "stepPath": "google.com",
            "isTracking": true
        }
    ],
    "__v": 0
}]

我正在使用的结构模型-

const mongoose = require('mongoose')
const funnel = new mongoose.Schema({
funnelName:{
    type:String,
    unique:true
},
group: String,
category: String,
funnelStep: [{
    stepType: String,
    stepName: String,
    stepPath: String,
    isTracking: Boolean,
    viewsStorage: []
}] })
mongoose.model('Funnel',funnel)

邮递员发送的JSON-

{
"funnelName":"Mortgage",
"url" : "google12.com",
"user_id" : "BATR0001",
"Date": 1 }

邮递员收到的回复-

[]

获取我正在使用的方法-

router.get('/',function(req,res){
Funnel.find({"Funnel.funnelStep.stepPath":req.body.url},function(err,funnels){
    if(err){
        console.log(err)
    }else{
        console.log(req.body.url)
        console.log(funnels)

        return res.json(funnels) 
    }
}) })

除此以外,我也尝试过以下方法-

Funnel.find({stepPath:req.body.url},function(err,funnels){.....}
Funnel.find({stepPath:req.params.url},function(err,funnels){....}

以上都不起作用,仅返回NULL或空数组。

有人可以协助我如何查询?

mongodb express search mongoose nested
1个回答
0
投票

根据您提供的数据模型,查询路径"Funnel.funnelStep.stepPath"似乎不正确。 Funnel部分表明应该有一个名为Funnel的嵌套对象,而根据您的模式,路径应以funnelStep开头,请尝试:

Funnel.find({"funnelStep.stepPath":req.body.url},function(err,funnels){
    if(err){
        console.log(err)
    }else{
        console.log(req.body.url)
        console.log(funnels)

        return res.json(funnels) 
    }
}) })

Example

© www.soinside.com 2019 - 2024. All rights reserved.