Oké, je kunt het op twee manieren doen:
Omdat je dit hebt:
uid = Objectid("5d518caed55bc00001d235c1")
disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']
U moet uw lijst met strings converteren naar een lijst met ObjectId's met behulp van python-code:
from bson.objectid import ObjectId
disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']
my_list = []
for i in disuid:
my_list.append(ObjectId(i))
Het ziet er als volgt uit:[ObjectId('5d76b2c847c8d3000184a090'),ObjectId('5d7abb7a97a90b0001326010')]
vervolgens door de nieuwe lijst my_list
. te gebruiken , je kunt een zoekopdracht als volgt doen:
user_posts.aggregate([{"$match" : { "$or" : [{ "userid" : uid }, { "userid" : { "$in" : my_list }}]}}])
Of op de andere manier die ik niet zou willen, omdat het omzetten van slechts enkele in code eenvoudiger is in vergelijking met n aantal waarden voor userid
veld over alle documenten in DB, maar voor het geval je wilt dat het wordt gedaan met behulp van DB-query:
user_posts.aggregate([{$addFields : {userStrings : {$toString: '$userid'}}},{"$match" : { "$or" : [{ "userid" : uid }, { "userStrings" : { "$in" : disuid }}]}}])
Opmerking: Als je geen bson-pakket hebt, moet je het installeren door iets te doen als pip install bson