Mongoose find()有多个条件

时间:2018-03-23 10:22:49

标签: node.js mongodb mongoose

我试图在我的数据库(MongoDB)中找到满足所有定义条件的数据记录(有些可能是未定义的)。我使用NodeJs作为服务器,并使用mongoose连接到数据库。

例如,我的数据库包含以下记录:

数据库名称:电影

{title: 'A' , main_actor, 'A.A.'},
{title: 'B' , main_actor, 'B.B.'},
{title: 'C' , main_actor, 'A.A.'}.

如果我的请求包含以下内容:

  • title =' A'和
  • main_actor未定义

我执行以下查询:

Movie.find(title: title, main_actor: main_actor, .....) 

响应是一个空数组,而我想得到

{title: 'A' , main_actor, 'A.A.'}

通过电影'找到所有唱片的最佳方式是什么?只有,' main_actor'只有,电影'和' main_actor'?换句话说,如果搜索条件未定义,有一种方法可以忽略一个或多个字段(我想避免做这样的事情:

if (criteria1 & !criteria2) { ...find(criteria1....)} 
if (!criteria1 & criteria2) { ...find(criteria2....)} 
if (criteria1 & criteria2) { ...find(criteria1,criteria2....)} 

2 个答案:

答案 0 :(得分:1)

您可以使用$or运算符,如果您的值未定义,请求将搜索未定义此字段的文档。

试试这个:

Movie.find({
    $or: [
        {title: title},
        {main_actor: main_actor}
        // ...
    ]
});

答案 1 :(得分:0)

您必须在对象

中包装标准
Movie.find({title: title, main_actor: main_actor, .....})

http://mongoosejs.com/docs/api.html#find_find