擅长:python、mysql、java
<p>迭代巨大的集合和搜索每个文档对于任何数据库都是非常昂贵的。你知道吗</p>
<p><strong>通用解决方案</strong>:添加一些标志/机制以仅处理新的URL。(作者:威利斯)</p>
<p><strong>解决方案1:</strong>批量搜索(<code>$in</code>)。如果你搜索(比如说每<code>find</code>100个url),它会增加你的程序(x100):</p>
<pre><code>db.posts.find({"url" : {"$in" : urls}})
*urls = [url1, url2, ..., url100]
</code></pre>
<p>现在,您需要检查<code>URL</code>中不存在的内容。你知道吗</p>
<p><strong>解决方案2:</strong>(仅当相同的DB时)使用<a href="https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/" rel="nofollow noreferrer">$lookup</a>。<br/>
您需要添加一些索引,它就做到了(MongoDB本机实现比手动实现更快)。你知道吗</p>
<p><strong>顺便问一下:</strong>您是指(相同|不同)服务器中的两个不同数据库还是同一数据库中的两个集合?你知道吗</p>