Node.js - Mongoose:在文档中搜索数组中的多个项目

时间:2017-07-27 18:05:31

标签: node.js mongodb mongoose

我如何(使用Node.js和MongoDB通过Mongoose)在文档中搜索数组中的许多项目。

例如,如果我有以下文件:

{
    _id: 123, field1: 'abc', field2: ['def', 'ghi', 'jkl'],
    _id: 456, filed1: 'abc', filed2: ['jkl', 'ghi', 'def']
}

架构称为schema1,如何使用

等查询执行搜索
{field1: 'abc', field2: ['def', 'jkl']}

并获取两个文档(所有文档的field1 ='abc'和field2在查询中包含数组中的两个项目)?

我尝试使用schema1.find(),但它只匹配整个数组而不是它们的项目。所以这两份文件都不会返回。

3 个答案:

答案 0 :(得分:1)

当我遇到同样的问题时,我的解决方案是做一些事情:

{field1: 'abc', field2: 'def', field2:'jkl'}

这应该返回field2field1和'abc'中至少同时包含'def'和'jkl'的所有文档。 它确实看起来有点尴尬,可能有更好的方法来编写这个查询,但它确实有效并且完全有效。

答案 1 :(得分:1)

您可以将$ all运算符与以下查询一起使用:

{
    field1: 'abc', 
    field2: {
        $all: ['def', 'jkl']
    }
}

答案 2 :(得分:0)

要获取结果,请使用

你可以使用$和连接条件和搜索数组中的元素使用$ in

db.collectionName.find({$ and:[{“field1”:“abc”},{“field2”:{$ in:[“def”,“jkl”]}}]})。pretty( )