當我使用在nodejs中的「$ where」子句中傳遞的函數查詢我的數據庫時,它總是會返回db中的所有文檔。
例如,如果我這樣做
var stream = timetables.find({$where: function() { return false; }}).stream();
還給了我所有的文件。 相反,如果我做
var stream = timetables.find({$where: 'function() { return false; }'}).stream();
是真正執行的功能,而這個代碼不返回任何文檔。
問題是,如果我在字符串中轉換我的函數上下文的bindinds被刪除,我需要他們更復雜的查詢。例如:
var n = 1;
var f = function() { return this.number == n; }
var stream = timetables.find({$where: f.toString()}).stream();
// error: n is not defined
這是正常行爲嗎?我如何解決我的問題? 請原諒我可憐的英語!
雖然它可能會很酷,如果這將工作的方式,你建議,它不會。你想要什麼類型的查詢?使用'$ where'通常被認爲是最後的選擇,因爲它執行的方式和結果的性能。如果你還沒有閱讀(http://docs.mongodb.org/manual/reference/operator/where/)。 – WiredPrairie 2013-03-25 11:15:21