无效MongoDB中的单行$

时间:2017-04-14 15:44:24

标签: node.js mongodb mongoose

这个想法是在一个请求(在JS中)获取文件,如果定义了数组,则获取包含在给定数组中的字段,或者如果未定义数组,则获取所有文档。

我只是想知道是否有任何优雅的意思为$ in参数赋予一个使其行为无效的参数,可以用作单行。我知道你必须让这种条件请求更优雅。

以下是使用Mongoose的代码段:

let query = SomeModel.find();
if (someArray) {
    query = query.where(someField).in(someArray);
}
query.exec();

确实有效,但需要将查询存储在变量中,所以不要太酷。

1 个答案:

答案 0 :(得分:0)

聚合可能有所帮助。

let itemValues = someArray || [];
SomeModel.aggregate([
{
    $match: {
        "someField": {
            [itemValues.length > 0 ? "$in" : "$nin"]: itemValues}
        }
}
]).exec()