2016-12-07 5 views
0

ユーザー入力に基づいて、タイプがいくつかの値の1つであるドキュメントのためにデータベースを検索したいと思います。入力が 'any'と等しい場合は、型が何かと等しい文書を返すようにしたいと思います。

My $ matchは集約ピンプラインの一部です。私はちょうどこのようなことをしたいと思っています。ここでinputTypeに設定した値は、型の値に関係なくすべてのドキュメントを返す$一致を引き起こします。

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

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

このようなものはありますか?これを行うより良い方法でしょうか?

+0

「$ {match:{$ or:{type: "type1"}、{type: "type2"}}}} '...または単に返す全体のコレクション – Hackerman

+0

私は変数だけを変更したいと思っていました。このように私は、他のすべての 'タイプ'の変数をオブジェクトに変更する必要があると思います – stackers

答えて

2

あなたはこれを行うことができます:

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

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

あなたは正規表現を使用できることを見出しました。

inputType = /.*/g; 
関連する問題