我试图在我的数据库(MongoDB)中找到满足所有定义条件的数据记录(有些可能是未定义的)。我使用NodeJs作为服务器,并使用mongoose连接到数据库。
例如,我的数据库包含以下记录:
数据库名称:电影
{title: 'A' , main_actor, 'A.A.'},
{title: 'B' , main_actor, 'B.B.'},
{title: 'C' , main_actor, 'A.A.'}.
如果我的请求包含以下内容:
我执行以下查询:
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....)}
答案 0 :(得分:1)
您可以使用$or
运算符,如果您的值未定义,请求将搜索未定义此字段的文档。
试试这个:
Movie.find({
$or: [
{title: title},
{main_actor: main_actor}
// ...
]
});
答案 1 :(得分:0)
您必须在对象
中包装标准Movie.find({title: title, main_actor: main_actor, .....})