2016-12-07 29 views
0

基于用户输入我想搜索我的数据库中的文件,其中的类型是几个值之一。如果输入等于'任何',我希望它返回类型等于任何东西的文档。

我的$匹配是集合pipleline的一部分。我只想做类似这样的事情,其中​​我设置为inputType的值将导致$ match返回所有文档,而不管它们的类型值如何。

if (inputType == 'any') 
inputType = '*'; 

{"$match": { 
    type: inputType, 
}} 

有没有这样的事情?或者更好的方法来做到这一点?

+0

如何:'{$比赛:{$或:[{类型: “TYPE1”},{类型: “2型”}]}}'...或者只是返回整个集合 – Hackerman

+0

我只是希望改变变量,只为'全部'。这样我想我必须改变其他'类型'的变量作为对象 – stackers

回答

2

你可以这样做:

if (inputType === 'any') { 
    inputType = { 
    $exists: true 
    }; 
} 

db.collection.aggregate([ 
    { 
    $match: { 
     type: inputType, 
    } 
    } 
]); 
0

发现,你可以使用正则表达式。这样做的工作:

inputType = /.*/g;