我們在RestHeart中有一個聚合查詢,效果很好。Restheart Aggregation Framework - 可選Avars?
在match
部分,我們允許用戶指定一個特定的文檔ID,只返回該文檔:
"_$match" : {
"_id" : {
"_$var" : "n"
},
然而,我們也想讓用戶能夠忽略這一點,並得到所有收集文件。
是否有任何方法使avars
可選,或者爲那個avar
指定通配符?目前,如果用戶省略了阿瓦爾,他們會得到一個錯誤。並將avar
設置爲null或者空字符串與這些值完全匹配。
我想另一種選擇是如果聚合查詢屬性中可以有條件邏輯 - 不知道這是否可能。
感謝
湯姆
完美---謝謝!所以在我的用例中,如果用戶爲「n」avar提供了一個值,那麼我將它包含在比賽中。 如果他們沒有給出一個值(我想這意味着我需要傳遞一個空字符串,所以ReSTHeart不會給出錯誤),那麼我不想在匹配字符串中包含該值。 我想我可能會需要,使用常規expresions做: $比賽:{ _id:{ 「$ COND」:{ 如果:{$ EQ:[{_ $ VAR」: 「N」 },「」]},然後:「/.*/」,else:{_ $ var「:」n「} } } } 這樣看起來合適嗎?還是有辦法做這不使用正則表達式? –
我對此進行了進一步研究,$ cond操作符在匹配部分似乎不受支持,所以我不認爲這個解決方案能夠工作。我想出了一個使用正則表達式的替代方案(見下文) –