【问题标题】:MongoDB Query : Find where key's value from list of valuesMongoDB 查询:从值列表中查找键的值
【发布时间】:2014-06-10 12:01:57
【问题描述】:

这可能真的很基础,但我不知道该怎么做。

我想查询集合中是否 key == value1 'OR' key == value2。

现在,值列表很长。所以虽然

db.collection.find({
  "$or": [{
    "key": "value1"
  }, {
    "key": "value2"
  }]
});

可以,但我想传递一个值列表。

MongoDB 中是否有任何语法允许我这样做?我会使用 Mongoid,所以如果 Mongoid 中存在这样的东西,那就太好了。

【问题讨论】:

    标签: mongodb mongoid mongodb-query


    【解决方案1】:

    您似乎想要 $in 运算符,这是逻辑等价的:

    db.collection.find({ "key": { "$in": [ "value1", "value2" ] } });
    

    这实际上是一个$or,因为同一字段的任何指定值都将匹配。在将不同条件与同一字段或其他字段进行比较时,您应该只需要 $or 运算符。但是对于相等匹配,这是简写。

    使用 Mongoid,您可以通过深入 Moped 层使用相同的语法,其访问器恰好是“集合”:

    Class.collection.find({ "key": { "$in": [ "value1", "value2" ] } });
    

    【讨论】:

    • 不能在 Ruby 中使用冒号...所以 tom = Device.collection.find({ "device_id" => { "in" => sue } })
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 2016-04-23
    • 1970-01-01
    相关资源
    最近更新 更多