我正在使用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中工作,并且我收到相同的错误
答案 0 :(得分:4)
在这种情况下,您可以使用implicit and
。以下查询应该有效
db.zoo.find({'animal': {$ne: 'dog', $ne: 'cat'}})
使你可以写and explicit
db.zoo.find({$and: [{'animal': {$ne: 'dog'}},{'animal': {$ne: 'cat'}}]})