我在https://github.com/fons/cl-mongo阅读了整个文档并理解(db.find "foo" (kv ($> "i" 3) ($< "j" 5)))
表示查询“i&gt; 3 AND j&lt; 5”。
我的问题是“$ or”的代码是什么?例如当i> 3 或 j <5时发出查询
感谢。
答案 0 :(得分:2)
您需要使用cl-mongo的原语翻译您需要以mongo格式表达的任何内容。
在mongo中,我认为它会是:
{$or: [{i: {$gt: 3}},
{j: {$lt: 5}}]}
在cl-mongo中,您将&#34; object&#34; s转换为kv
表单,将&#34; array&#34; s转换为列表。许多mongo运算符定义了shorthands,但我认为$or
不是其中之一,因此您需要定义或明确地执行:
(kv "$or"
(list ($> i 3)
($< j 5)))
$or
的便捷宏可能如下所示:
(defmacro $or (&rest forms)
`(kv "$or" (list ,@forms)))
然后你可以写
($or ($> i 3)
($< j 5))
(未测试的)。