所以我有collection1
:
field11 | field12
a1 | text1
b1 | text2
c1 | text3
...
另一个collection2
:
field21 | field22
a1 | a2
c1 | c2
f1 | a2
...
我需要的是查询collection1
获取所有结果,其中field11不存在于field21
的{{1}}中。
我现在这样做的方式是这样的:
collection2
所以基本上我根据某些搜索条件从第二个集合中组装一个字段值列表,然后针对第一个集合运行另一个查询,其中我指定我需要结果excluded = []
cursor2 = collection2.find({'field22': 'a2'})
for doc in cursor2:
excluded.append(doc['field21'])
cursor1 = collection1.find({'field11': {'$nin': excluded}})
不在汇编的值列表中
有效。没问题。但是我感到担心,因为field11
不断增长,这个collection2
列表不断增长。我有非理性的恐惧击中python列表限制:)但我也担心可能列表越大,查询运行得越慢,找不到结果...
我是MongoDB的新手并且自己也这样想,所以我不确定是否有更好的方法来做到这一点?