在MongoDB中过滤嵌入的文档

时间:2010-01-26 09:25:44

标签: mongodb nosql

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

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

过滤我的blogs集合非常简单,但为了过滤每个comments中嵌入的blog,我必须将它们全部加载到内存中(全部检入一个Ruby数组),循环遍历每个注释,返回符合特定条件的注释。

我使用点表示法过滤嵌入式文档的努力失败了,并且还带回了所有子文档。

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

1 个答案:

答案 0 :(得分:22)

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

我们有一个“虚拟馆藏”案例,可以实现所需的功能;随意投票:

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

与此同时,您应该将评论视为自己的集合。通常,如果您需要自己使用给定的数据集,请将其设置为集合。如果最好将其视为其他组合的一部分,那么最好嵌入。