I have a list of ObjectIds which I want to pass into the following pymongo command to find the documents by their ObjectId
ids = ['62b3221c2db07f9388aa61e9', '62b325f65402e5ceea9a3d4c', '62b48ccee6f77605c2783775']
list(dbusers.find({"_id" : {"$in": ids }}))
However it expects them to be in the format ids = [ObjectId('62b3221c2db07f9388aa61e9'), ObjectId('62b325f65402e5ceea9a3d4c'), ObjectId('62b48ccee6f77605c2783775')]
But I can't seem to get them in this format as they are in a list?
You can convert the object id strings to proper ObjectId
objects by giving the object id as a parameter when creating it ( ObjectId(<object_id>)
).
To convert your list to a list of ObjectId
objects instead of a plain string list, you can use map
which invokes a callable on each element in a list and returns an iterator - you can then exhaust this iterator and get a list back by giving it to list
:
from bson.objectId import ObjectId
object_id_list = list(map(ObjectId, ids))
found_users = list(dbusers.find({"_id": {"$in": object_id_list}}))
Since a class works as a callable to instantiate the class, you can give the class as the first argument to map
and get objects created as that class back.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.