Ok, du kan göra det på två sätt:
Som du har det här :
uid = Objectid("5d518caed55bc00001d235c1")
disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']
Du måste konvertera din lista med strängar till en lista med ObjectId med python-kod:
from bson.objectid import ObjectId
disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']
my_list = []
for i in disuid:
my_list.append(ObjectId(i))
Det kommer att se ut så här:[ObjectId('5d76b2c847c8d3000184a090'),ObjectId('5d7abb7a97a90b0001326010')]
sedan genom att använda ny lista my_list
, du kan göra en fråga så här :
user_posts.aggregate([{"$match" : { "$or" : [{ "userid" : uid }, { "userid" : { "$in" : my_list }}]}}])
Eller på andra sätt som jag inte skulle föredra, eftersom det är lättare att konvertera några få i kod jämfört med n antal värden för userid
fält över alla dokument i DB, men för säkerhets skull om du vill att det ska göras med DB-fråga:
user_posts.aggregate([{$addFields : {userStrings : {$toString: '$userid'}}},{"$match" : { "$or" : [{ "userid" : uid }, { "userStrings" : { "$in" : disuid }}]}}])
Obs: Om du inte har bson-paketet måste du installera det genom att göra något som pip install bson