我正在创建一个模块化查询,您可以在其中动态包含或省略参数。
这是我最后运行的功能:
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',而是作为文字对象。
我该怎么办?
答案 0 :(得分:0)
这是因为您的数据结构无效。您不能像以下那样定义子文档:
children: sons {
name: 'michael'
}
}
如果sons
下有多个children
,则您的文档应为 -
{
children : {
sons : [
name: 'michael'
]
}
}
然后,您可以根据需要进行查询。
Schema.find({'children.sons.name' : 'michael'}, function...)