27

我无法掌握如何在 MongoDB 中过滤嵌入式文档,并且开始认为我应该使用关系关联,但在文档存储上下文中感觉不对。

坚持使用典型的博客/评论系统,我有一个集合blogs,每个blog都有很多comments. 评论作为嵌入文档存储在博客文档中。

过滤我的集合非常简单blogs,但是为了过滤我comments嵌入的 each blog,我必须将它们全部加载到内存中(将所有内容检索到 Ruby 数组中),并遍历每个评论,返回符合特定条件的评论.

我使用点符号过滤嵌入式文档的努力失败了,并带回了所有子文档。

有没有更好的方法让 MongoDB 为我过滤这些,或者我应该让自己接受关系关联?(从长远来看,拉回所有嵌入的文档并手动过滤将过于密集)

4

1 回答 1

22

目前无法以您描述的方式过滤嵌入式文档。使用点表示法允许您匹配嵌入的文档,但仍将返回整个文档、父文档和所有文档。也可以选择将返回哪些字段,但这也对您的情况没有帮助。

我们有一个“虚拟集合”案例,它将实现所需的功能;随意投票:

http://jira.mongodb.org/browse/SERVER-142

同时,您可能应该将评论视为他们自己的集合。一般来说,如果您需要单独处理给定的数据集,请将其设为集合。如果将其更好地构思为其他集合的一部分,则最好嵌入。

于 2010-01-26T14:50:46.987 回答