我在 https://github.com/fons/cl-mongo 阅读了整个文档并了解(db.find "foo" (kv ($> "i" 3) ($< "j" 5)))
表示当“i>3 AND j<5”时查询。
我的问题是“$or”的代码是什么?喜欢查询当 i>3 或 j<5?
谢谢。
最佳答案
您需要使用 cl-mongo 的原语翻译您需要以 mongo 格式表达的任何内容。
在 mongo 中,我认为它会是:
{$or: [{i: {$gt: 3}},
{j: {$lt: 5}}]}
在 cl-mongo 中,您将“对象”转换为 kv
形式,将“数组”转换为列表。许多 mongo 运算符都定义了简写形式,但我认为 $or
不是其中之一,因此您需要定义它或显式定义它:
(kv "$or"
(list ($> i 3)
($< j 5)))
$or
的便捷宏可能如下所示:
(defmacro $or (&rest forms)
`(kv "$or" (list ,@forms)))
然后就可以写了
($or ($> i 3)
($< j 5))
(未经测试)。
关于mongodb - 使用 cl-mongo 时如何表达 $or,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25603116/