python - Pymongo,查询列表字段,和/或

标签 python mongodb pymongo

我有一个包含一些文档的集合,例如:

{
    _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()

或者,对于 AND:

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}]})

我建议阅读 Mongodb Advanced queries

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

关于python - Pymongo,查询列表字段,和/或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12064764/

相关文章:

Mongodb计算查询--累积乘法

javascript - 如何将图像文件放入 json 对象中?

python - 在 MongoEngine 查询中获取引用对象的数据,而不仅仅是 id

python - OpenCV:src 不是数字元组

python - 在字典项列表中查找最小和最大元素

python - Python 中的单词数统计

mongodb - 使用 Mongodb 导入时出现问题 : fatal error: MSpanList_Insert

python - 如何检查 MongoDB 实例的客户端是否有效?

python json 自定义解码 LONG

python - 如何在 Spyne 服务器方法中使用 'self' 参数