2014-09-01 29 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