如何在创建新文档时避免加载引用的文档?

时间:2016-02-05 16:51:39

标签: mongodb doctrine-odm

我有一个<dependencies>文档,该文档引用了许多<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> 个文档,而这些文档又引用了其他文档:

Playlist

另一个文档Song引用了一个/** @Document(collection="playlists") */ class Playlist { /** * @var \Doctrine\Common\Collections\Collection * * @ReferenceMany(targetDocument="Song", simple=true) */ protected $songs; } /** @Document(collection="songs") */ class Song { /** * @var string * * @ReferenceOne(targetDocument="Foo", simple=true) */ protected $foo; /** * @var string * * @ReferenceOne(targetDocument="Bar", simple=true) */ protected $bar; }

Like

每次我坚持(插入)一个新的Playlist文档时,会加载一些引用(深层次或非深层次)(执行大量相关查询);在这种特定情况下,这是无用的。

如何避免这种“贪婪”行为(模型重构,配置,缓存等)?

1 个答案:

答案 0 :(得分:1)

使用手动参考:

https://docs.mongodb.org/manual/reference/database-references/#manual-references

简而言之,在与其关联的<?php $data = file_get_contents('demo.txt'); $lines= split("\n",$data); ?> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> <script type="text/javascript"> var textarray = <?php echo json_encode($lines); ?>; function RndText() { var rannum= Math.floor(Math.random()*textarray.length); $('#text').text(textarray[rannum]); console.log(textarray[rannum]+" "+rannum+" "+textarray.length); } $(document).ready(function(){ $('#text').hide(); $('#random').click(function(){ $('#text').show(); RndText(); }); }); </script> <body> <div id="text"></div> <button id="random">RANDOM</button> </body>中存储"List"个ID。

然后当您更改Articles时,您不需要加载所有相关文章。

您可以使用以下内容获取给定“列表”的所有文章:

"List"

我认为db.articles.find({"listId" : "foo"})集合的目的会发生变化 - 不确定而不会看到您的架构。这是引用"List"的原因。