![](/img/trans.png)
[英]Find documents from a multiple selector element in MongoDB and Meteor
[英]Meteor passing MongoDB selector from parameter
我要查詢的內容與舊式rdbms中的LIKE
一樣,因此我必須為此使用某種正則表達式。
當我嘗試這個,它工作正常
Countdowns.find({"name":{ "$regex": /ANW/ }},{ sort: {regDate: -1 }});
該值正確返回。 但是,當我構建mongoDb選擇器(該函數的第一個JSON參數)時,它將永遠無法工作。
var key = Session.get('searchKey');
var field = Session.get('searchField');
var temp = '{"'+ field +'":{ "$regex": /'+key+'/ }}';
var selector = JSON.parse(JSON.stringify(temp));
Countdowns.find(selector,{ sort: {regDate: -1 }});
當我對其進行測試時(在JSON.parse中使用try-catch),該JSON對象的構建沒有任何錯誤,但是以某種方式(當我將其作為變量傳遞時,該函數( find()
)無法運行)。
還有其他構建選擇器的方法嗎?
我已經在控制台上進行了測試,這就是我得到的。
嘗試這樣
var key = Session.get('key'), field = Session.get('field');
var selector = {};
selector[field] = { $regex : new RegExp(key) };
有了這個,您將獲得:
這對於minimongo應該是可以接受的。
為什么JSON.parse
無法正常工作? 在您傳遞temp
一點上,它看起來像:
在將其傳遞給JSON.stringify
之前,您已經有一個字符串。 可是等等! 您會說,如果我改為將其傳遞給JSON.parse
,它將起作用嗎? 讓我們看看:
不。 正斜杠必須正確設置格式,即使這樣,您仍將獲得$regex
的字符串,並且需要RegExp
對象 。
因此,最終這樣做的方式就是我之前寫給您的。 首先,您將定義一個變量,該變量將數據庫的選擇器保存為一個對象,並以此構造selector
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.