我有一个包含一些文档的集合,例如:
{
_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/