Добре, можете да го направите по два начина:
Тъй като имате това:
uid = Objectid("5d518caed55bc00001d235c1")
disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']
Трябва да преобразувате вашия списък с низове в списък с ObjectId, като използвате код на python:
from bson.objectid import ObjectId
disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']
my_list = []
for i in disuid:
my_list.append(ObjectId(i))
Ще изглежда така:[ObjectId('5d76b2c847c8d3000184a090'),ObjectId('5d7abb7a97a90b0001326010')]
след това с помощта на нов списък my_list
, можете да направите заявка по този начин:
user_posts.aggregate([{"$match" : { "$or" : [{ "userid" : uid }, { "userid" : { "$in" : my_list }}]}}])
Или по друг начин, който не бих предпочел, тъй като конвертирането само на няколко в кода е по-лесно в сравнение с n на брой стойности за userid
поле върху всички документи в DB, но за всеки случай, ако искате да се направи с помощта на DB query:
user_posts.aggregate([{$addFields : {userStrings : {$toString: '$userid'}}},{"$match" : { "$or" : [{ "userid" : uid }, { "userStrings" : { "$in" : disuid }}]}}])
Забележка: В случай, че нямате bson пакет, тогава трябва да го инсталирате, като направите нещо като pip install bson