Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用mongoose按嵌套文档属性查找_Javascript_Mongodb_Node.js_Mongoose - Fatal编程技术网

Javascript 使用mongoose按嵌套文档属性查找

Javascript 使用mongoose按嵌套文档属性查找,javascript,mongodb,node.js,mongoose,Javascript,Mongodb,Node.js,Mongoose,我目前有一个文档集合,每个文档都包含指向该集合中其他文档的数组。我需要查询这个集合中嵌套在数组中的文档是否包含某个属性。我希望这能更清楚地解释我的要求: if doc.list1[0].prop = 'foo' or doc.list2[0].prop = 'foo' then select doc 我尝试过像这样使用.find(),但没有效果 { 'doc.list1': 'foo', $or: [ { 'doc.list2': 'foo' } ] }

我目前有一个文档集合,每个文档都包含指向该集合中其他文档的数组。我需要查询这个集合中嵌套在数组中的文档是否包含某个属性。我希望这能更清楚地解释我的要求:

if doc.list1[0].prop = 'foo' or doc.list2[0].prop = 'foo' then select doc
我尝试过像这样使用.find(),但没有效果

{
    'doc.list1': 'foo',
    $or: [
        { 'doc.list2': 'foo' }
    ]
}
我走对了吗?因为我想我不是。这是我能从文档中得到的最好的信息

编辑

下面是我使用与Thomas建议相同的布局初始化的实际查询

var query = this.Word.find({
    $or: [
        { 'before.0.cleanWord': topic },
        { 'after.0.cleanWord': topic },
        { 'cleanWord': topic }
    ]
});

太好了,我明天才能测试,但这看起来很有希望。所以这将搜索数组中的每个嵌套文档,而不仅仅是第一个?我很难理解数据库中发生了什么。它是一个对象ID数组吗?无论如何,这应该是一个有效的$or查询,您发布的查询将始终与doc.list1='foo'匹配,并且您的$or语句是无关的,因为它只有一个元素,更像是and。好的,我已经使用您的建议将当前代码附加到我的问题中。它仍然不返回任何文档。但仍在调试。我的错!它适用于您的代码,另一个问题是我没有将
cleanWord
添加到模式中。非常感谢你!
{
  $or: [
    { 'doc.list1.0.prop': 'foo' }
    { 'doc.list2.0.prop': 'foo' }
  ]
}