为子文档创建查询对象

时间:2016-05-05 01:57:29

标签: mongodb mongoose

我正在创建一个模块化查询,您可以在其中动态包含或省略参数。

这是我最后运行的功能:

Schema.find(query,function (err, results) {})

为此,我创建了一个查询对象:

var query = {}

我为它添加了不同的属性。例如:

query._id=12345

所以这个案例的显式如下:

Schema.find({_id:12345}, function (err, results) {})

到目前为止一切顺利。 当我需要查询子文档时,我的问题就出现了。

例如,当我需要创建此查询时:

Schema.find({'children.sons.name':'michael'}, function...)

因为我可以创建这个对象的唯一方法是:

var query = {
    children: sons {
           name: 'michael'
                   }

            }

当我通过'find'函数运行时,不会被解释为'children.sons.name':'michael',而是作为文字对象。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

这是因为您的数据结构无效。您不能像以下那样定义子文档:

children: sons {
       name: 'michael'
    }
}

如果sons下有多个children,则您的文档应为 -

{
    children : {
        sons : [
            name: 'michael'
        ]
    }
}

然后,您可以根据需要进行查询。

Schema.find({'children.sons.name' : 'michael'}, function...)