PyMongo не может получить $и + $или работать
3 Maximas [2014-12-09 11:26:00]
Я использую python 3, mongo version 2.6.4 и pymongo версии 2.7. Я не могу получить следующий запрос для работы... Этот запрос - это то, что я положил прямо в оболочку mongo:
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
}
Я нашел Джиру, которая была поднята, но я не был уверен, связано ли это с той же проблемой https://jira.mongodb.org/browse/SERVER-12981
Я пробовал все комбинации, о которых я могу думать, но я не могу решить эту проблему.
Спасибо заранее.
ИЗМЕНИТЬ: Я делал попытку $nin, но ничего не возвращал. Несмотря на то, что это запрос оболочки Mongo, я не могу заставить его работать в PyMongo, и я получаю ту же ошибку
python-3.x mongodb pymongo
1 ответ
4 Решение Jehof [2014-12-09 12:04:00]
В этом случае вы можете использовать implicit and
. Следующий запрос должен работать
db.zoo.find({'animal': {$ne: 'dog', $ne: 'cat'}})
чтобы сделать and explicit
, вы можете написать
db.zoo.find({$and: [{'animal': {$ne: 'dog'}},{'animal': {$ne: 'cat'}}]})