2016-12-07 76 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;