MongoDB查询: Find where key's value from list of values

标签 mongodb mongoid mongodb-query

这可能非常基本,但我不知道该怎么做。

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

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

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

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

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

最佳答案

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

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

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

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

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

关于MongoDB查询: Find where key's value from list of values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24140504/

相关文章:

ruby-on-rails - 将 MongoDB 中的 _id 类型更改为整数是否不好?

java - 在 MongoDB Java 驱动程序中创建查询

javascript - 仅选择周末日期

mongodb - 如何在mongodb中删除N个文档

javascript - 使用 nedb 数组进行 ng-repeat

mongodb - 将字符串转换为objectid mongodb

mongodb - 在 MongoDB 中检索数组中项目的索引

node.js - 文本搜索对于某些单词不返回任何内容

c# - C# MongoDB.Driver 2.0.0-beta1 中缺少 SetRepresentation() 方法

mongodb - 不在带有 $expr 的文档字段数组 mongodb 中