OK、2つの方法でそれを行うことができます:
あなたがこれを持っているように:
uid = Objectid("5d518caed55bc00001d235c1")
disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']
Pythonコードを使用して、文字列のリストをObjectIdのリストに変換する必要があります:
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 }}]}}])
または、私が好まない他の方法では、userid
のn個の値と比較して、コードでほんの少しだけ変換する方が簡単です。 DB内のすべてのドキュメントのフィールドですが、DBクエリを使用して実行する場合に備えて:
user_posts.aggregate([{$addFields : {userStrings : {$toString: '$userid'}}},{"$match" : { "$or" : [{ "userid" : uid }, { "userStrings" : { "$in" : disuid }}]}}])
注: bsonパッケージがない場合は、pip install bson
のようにインストールする必要があります。