Ok, můžete to udělat dvěma způsoby:
Jak máte toto:
uid = Objectid("5d518caed55bc00001d235c1")
disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']
Musíte převést svůj seznam řetězců na seznam ObjectId pomocí python kódu:
from bson.objectid import ObjectId
disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']
my_list = []
for i in disuid:
my_list.append(ObjectId(i))
Bude to vypadat takto:[ObjectId('5d76b2c847c8d3000184a090'),ObjectId('5d7abb7a97a90b0001326010')]
poté pomocí nového seznamu my_list
, můžete zadat dotaz takto:
user_posts.aggregate([{"$match" : { "$or" : [{ "userid" : uid }, { "userid" : { "$in" : my_list }}]}}])
Nebo jiným způsobem, který bych neupřednostňoval, protože převod jen několika v kódu je snazší ve srovnání s n num hodnot pro userid
pole přes všechny dokumenty v DB, ale pro případ, že chcete, aby to bylo provedeno pomocí dotazu DB:
user_posts.aggregate([{$addFields : {userStrings : {$toString: '$userid'}}},{"$match" : { "$or" : [{ "userid" : uid }, { "userStrings" : { "$in" : disuid }}]}}])
Poznámka: V případě, že nemáte balíček bson, musíte jej nainstalovat provedením něčeho jako pip install bson