【发布时间】:2015-02-04 06:20:23
【问题描述】:
在我的流星应用程序中,我有一个巨大的文档集合,每个都有一个字段tags,基本上是这样的:
{..., tags: ["a","b","c"], ...},
{..., tags: ["a","b","d"], ...},
{..., tags: ["b","c","e"], ...},
{..., tags: ["x","y","z"], ...},
....
现在我想用一些标签查询服务器上的集合,例如:["a","d","y"] 并获取所有匹配至少一个标签的结果,结果集按匹配标签的数量排序 .因此,在示例集中,结果应该是:
{..., tags: ["a","b","d"], ...},
{..., tags: ["a","b","c"], ...},
{..., tags: ["x","y","z"], ...}
因为第一个文档有两个匹配项"a" 和"d",而另外两个元素有一个匹配项"a" 和"y"。
目前我知道我可以使用$in 来匹配至少有一个匹配项的所有文档,$all 来获取每个标签匹配的所有文档,但这并不能以某种方式削减它。如果需要,我还可以使用 mongoDB 的聚合框架。
所需的查询是什么样的?
【问题讨论】: