Tengo una lista de ID y quiero consultar una colección basada en esa lista. El campo que estoy filtrando es id_ , es un ObjectID .
Ejemplo:
list = ['abcd','mnop','qrst']
Quiero buscar documentos que el _id está en esa lista:
cursor = db.find( {"_id": { "$in": list} } ) cursor = db.find( {"_id": { "$in": ObjectId(list)} } ) Probé las dos opciones anteriores y ninguna funcionó. El primero devolvió vacío y el segundo arroja un error de tipo: TypeError: id must be an instance of (bytes, str, ObjectId), not <class 'list'>
¿Cómo puedo corregir mi código?
Como dijo @prasad_, es necesario generar el ObjectId de la cadena.
list_ = ['abcd','mnop','qrst'] list_ = [ObjectId(x) for x in list_] cursor = db.find( {"_id": { "$in": list_} } ) Entonces, el operador "$in" de MongoDB se refiere a la lista que tiene ObjectId como contenido.