我收集了一些文件,比如:

{
    _id: 5,
    vals: [100, 1100, 1500]
},
{
    _id: 10,
    vals: [1100, 1700]
}

如何查询在vals字段中包含以下内容的文档:

  • 1100
  • 1700或100
  • 100和1100

我可以使用一些理解魔法,比如:

g = lambda codes: (
    d for d in collection.find() if any(code in d["vals"] for code in codes)
)
g([100, 1700]).next()

或者,对于和:

g = lambda codes: (
    d for d in collection.find() if all(code in d["vals"] for code in codes)
)
g([100, 1100]).next()

这似乎有点笨重,但如果有一些发现魔法,可以与司机.

推荐答案

yourmongocoll.find({"vals":1100})
yourmongocoll.find({"$or":[ {"vals":1700}, {"vals":100}]})
yourmongocoll.find({"$and":[ {"vals":100}, {"vals":1100}]})

i would recommend reading Mongodb Advanced queries

你还会发现$in...有用的

Mongodb相关问答推荐

MongoDB即使在使用索引时也很慢

如何在Mongo中查找数组中的特定对象

程序可以运行,但我不断收到发送到客户端后无法设置标题,我应该忽略它吗?

如何聚合过滤器嵌套文档并从其他字段中获取值

mongo.lock 文件有什么用?

删除一对一和一对多引用 - Mongoose

从 PHP 打印 MongoDB 日期

MongoDB 的 Java 语法

如何在 MongoDb 中使用杰克逊将日期字段存储为 ISODate()

如何返回 MongoDB 中文档的 ObjectId 或 _id?和错误$in 需要一个数组

如何使用 java 驱动程序更新 mongo db 中的文档字段?

MongoDB - 文件大小巨大且不断增长

MongoDB count() 未定义

在 MongoDB 中插入或更新许多文档

在 Mongo 中,$near 和 $nearSphere 有什么区别?

MongoDB - Permission denied for socket: /tmp/mongodb-27017.sock

120 个 mongodb 集合与单个集合 - 哪个更有效?

PyMongo 中的警告消息:count is deprecated

mongo中的稀疏索引和空值

MongoDB 引用的最佳实践