pymongo извлекает документ с более чем одним условием mongodb

#python #json #mongodb #find #pymongo

#python #json #mongodb #Найти #pymongo

Вопрос:

Я ищу команду в pymongo, которая выполняет эквивалент этой команды mongodb:

 db.collection.find({
    $and:[
        {"key1":"value1"},
        { 
            $or: [
                {"key2" : "value2"},
                {"key2": "value3"}
           ]
        }
    ]
})
  

В общем, я хотел бы выполнить поиск в документе, добавляющем более одного условия.

Спасибо

Комментарии:

1. На самом $and деле это неявно во всех запросах MongoDB, поэтому вам не нужно оборачивать все это. На самом деле нет никакой разницы, поскольку синтаксис python для этого практически одинаков. У вас также была опечатка дополнительной фигурной } скобки.

2. <collectionname>.find_one(<condition>) должно работать

Ответ №1:

Вы можете делать все, что делает оболочка mongodb, но с помощью pymongo. Просто используйте строки!

 client = MongoClient('localhost', 47017)
mydb = client.mydb
mycol = mydb.mycol

mycol.find({
    "$and":[
        {"key1":"value1"},
        { 
            "$or": [
                {"key2" : "value2"},
                {"key2": "value3"}
           ]
        }
    ]
})
  

Ответ №2:

Следуя документации API:

http://api.mongodb.org/python/current/api/pymongo/collection.html#pymongo.collection .Collection.find

Просто используйте find(), аргумент spec может обрабатывать многоключевой dict, поэтому вы можете просто использовать

 col.find({"key1":"value", "$or":["key2":"value2", "key3":"value3"]})