擅长:python、mysql、java
<p>只是说说所有的选择。
@罗斯是对的。Mongodb没有连接。但实际上你有两个选择(不仅仅是一个):</p>
<ol>
<li>(由@Ross描述)</li>
</ol>
<blockquote>
<p>you have todo two queries. One to get the matching Tag and then one to
query the Doc collection and find any references to that Tag.</p>
</blockquote>
<ol start=“2”>
<li><p>进行聚合,<code>mongoengine</code>支持它:</p>
<pre><code>docs1 = Doc.objects.aggregate(
{"$lookup": {
"from": "tag", # Tag collection database name
"foreignField": "_id", # Primary key of the Tag collection
"localField": "nameTag", # Reference field
"as": "nameTag",
}},
{"$unwind": "nameTag"},
{"$match": {"nameTag.name": name}})
</code></pre></li>
</ol>
<p>需要<code>$unwind</code>,因为<code>$lookup</code>返回一个文档列表。但在您的情况下,每个列表总是一个文档,所以您可以毫无疑问地使用此代码。在</p>
<p>第二种方法似乎比第一种方法复杂得多。但对于第一个方法,您必须对数据库执行两个查询(第二个方法只有一个)。在某些情况下,第二种方法会更有效。在</p>