【问题标题】:How can I query 1=1 or 1=0 in mongo?如何在 mongo 中查询 1=1 或 1=0?
【发布时间】:2019-09-14 01:32:08
【问题描述】:

在 SQL 中,可以添加 1=1 或 1=0 查询条件来分别返回所有记录或不返回任何记录。我怎样才能在 mongo 中做同样的事情?

【问题讨论】:

  • 要获得所有结果,您可以使用空对象作为查询{}。要获得任何结果,您可能可以使用 {_id: 0} 或类似的东西。不保证不返回任何结果,但很有可能。
  • 是的,我在想{_id: null} 之类的东西,同样的想法。那我就这么做,谢谢!

标签: mongodb


【解决方案1】:

正如 cmets 中的回答,mongo 中 1=1 查询条件的等价是使用空对象 {} 作为查询。例如,db.foos.find({})

1=0 查询条件可以在 mongo 中通过将空数组传递给 $in 查询条件来模拟。例如,db.foos.find({ _id: { $in: [] } })。此外,使用在 $where 查询条件中始终返回 false 的 javascript 函数也可以正常工作。例如,db.foos.find({ $where: function() { return false } })

{ _id: 0 }{ _id: null } 相比,1=0 的这两个条件的额外好处是,即使0null 是您集合中_id 的有效值,它也会起作用。但是,我不确定这些查询是否会带来额外的性能损失。

【讨论】:

    【解决方案2】:

    现在(从 3.6 版开始)您可以直接表达这一点:

    { $expr: { $eq: [1, 1] } }
    

    { $expr: { $eq: [0, 1] } }
    

    【讨论】:

    • 更简单:{ $expr: true }{ $expr: false }(使用版本 4 测试)
    猜你喜欢
    • 2018-09-26
    • 2017-11-28
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多