Does a big _id:$in query on any iterator

def find_by_ids(self, _ids, projection=None, **kwargs):
        """
            Does a big _id:$in query on any iterator
        """

        id_list = [ObjectId(_id) for _id in _ids]

        if len(_ids) == 0:
            return []  # FIXME : this should be an empty cursor !

        # Optimized path when only fetching the _id field.
        # Be mindful this might not filter missing documents that may not have been returned, had we done the query.
        if projection is not None and list(projection.keys()) == ["_id"]:
            return [self({"_id": x}, fetched_fields={"_id": True}) for x in id_list]
        else:
            return self.find({"_id": {"$in": id_list}}, projection=projection, **kwargs)