2014-09-01 61 views
1

當我https://github.com/fons/cl-mongo閱讀整個文檔,瞭解(db.find "foo" (kv ($> "i" 3) ($< "j" 5)))意味着查詢時,「我> 3 Ĵ< 5」。
我的問題是「$ or」的代碼是什麼? like i query when i> 3 or j < 5?
謝謝。

回答

2

你需要翻譯任何你需要用mongo的格式來表示使用cl-mongo的原語。

在蒙戈,我認爲這將是:

{$or: [{i: {$gt: 3}}, 
     {j: {$lt: 5}}]} 

在CL-蒙戈,你翻譯的 「對象」 s到kv形式, 「陣列」 s到列表中。許多蒙戈運營商有速記定義,但我認爲$or是不是其中之一,所以你需要或者定義或做它明確:

(kv "$or" 
    (list ($> i 3) 
      ($< j 5))) 

$or一個方便的宏可能是這樣的:

(defmacro $or (&rest forms) 
    `(kv "$or" (list ,@forms))) 

然後,你可以寫

($or ($> i 3) 
    ($< j 5)) 

(未經測試)。

+1

非常感謝。你是天才! – 2014-09-01 18:38:20