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

时间:2012-08-22 00:09:42

标签: python mongodb pymongo

我有一些包含以下文档的集合:

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

如何查询vals字段中包含的文档:

  • 1100
  • 1700 OR 100
  • 100 AND 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()

这似乎有点笨拙但是如果有一些可以通过驱动程序找到魔法。

1 个答案:

答案 0 :(得分:45)

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

我建议阅读Mongodb Advanced queries

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