По сути, вам нужно выполнить LEFT JOIN
между двумя коллекциями, где responded_messages
равно NULL
.
Этого можно добиться с помощью оператора агрегации MongoDB $ lookup .
Например, для данной коллекции messages
, как показано ниже:
{ "_id": 1, "message_id": 1 }
{ "_id": 2, "message_id": 2 }
{ "_id": 3, "message_id": 3 }
и коллекция responded_messages
, как показано ниже:
{ "_id": 1, "message_id": 3 }
Используя PyMongo , вы можете сделать:
collection = client["dbName"]["messages"]
pipeline = [{'$lookup':
{'from' : 'responded_messages',
'localField' : 'message_id',
'foreignField' : 'message_id',
'as' : 'responses'}
},
{'$match': {'responses' : {"$size": 0} } },
]
for doc in (collection.aggregate(pipeline)):
print(doc)
См. Также Примеры агрегации PyMongo