PyMongo无法获得$和+ $或工作

时间:2014-12-09 08:27:00

标签: mongodb python-3.x pymongo

我正在使用python 3,mongo版本2.6.4和pymongo版本2.7。我无法使用以下查询... 这个查询是我直接放入mongo shell的:

db.zoo.find({'animal': {'$and': [{'$ne': 'dog'}, {'$ne': 'cat'}]}}).limit(20).pretty()

(极限和漂亮只在我测试的时候)
这是我得到的错误:

error: {
    "$err" : "Can't canonicalize query: BadValue unknown operator: $and",
    "code" : 17287
}

使用$或运算符时收到同样的错误:

error: {
    "$err" : "Can't canonicalize query: BadValue unknown operator: $or",
    "code" : 17287
}

我确实发现了一个已经被提出的Jira,但我不确定它是否与同一个问题有关 https://jira.mongodb.org/browse/SERVER-12981

我已经尝试过所有我能想到的组合,但我无法解决这个问题。

提前致谢。

修改: 我确实尝试了$ nin但它什么都没回来。即使这是Mongo shell查询,我也无法让它在PyMongo中工作,并且我收到相同的错误

1 个答案:

答案 0 :(得分:4)

在这种情况下,您可以使用implicit and。以下查询应该有效

db.zoo.find({'animal': {$ne: 'dog', $ne: 'cat'}})

使你可以写and explicit

db.zoo.find({$and: [{'animal': {$ne: 'dog'}},{'animal': {$ne: 'cat'}}]})