Python MongoDB 查询以获取文档列表,其中 '_id' != id



我在集合中有多个文档。文档包含_idtransaction_id。在大多数文档中,_idtransaction_id相同。我必须检查是否有任何特定transaction_id的文档具有不匹配的_id。为此,我使用以下应用

all_trans_doc_list = list(tc_coll.find({}))    # Getting all docs from collection
for transaction_id in transaction_list:

found = False
for trans in all_trans_doc_list:
if str(trans['_id']) == str(transaction_id ):
found = False
else:
found = True


上述方法的问题是,例如,我将事务列表作为[12345, 67890]。因此,对于transaction_id[12345]trans['_id']匹配,So find变为False,但对于另一个trans['_id'],它变为True,因此这种方法是不正确的。有人能建议一个查询,它可以列出_id&transaction_id不匹配。请帮忙。感谢

您可以在查询中使用$expr聚合表达式运算符和$ne运算符,使用$in、在提供的ID列表中选择不匹配的文档及其transaction_id

all_trans_doc_list = tc_coll.find({ 
'transaction_id': { '$in': transaction_list },
'$expr': { '$ne': ['$transaction_id', '$_id'] } 
})

最新更新