跟踪数百万项大型文档集合的唯一标签的最佳方法是什么?进行标记的正常方法似乎是索引多键。不过,我经常需要获取所有唯一键。我也无法访问 mongodb 的新“distinct”命令,因为我的驱动程序 erlmongo 似乎还没有实现它。
3 回答
即使您的驱动程序没有实现 distinct,您也可以自己实现它。在 JavaScript 中(对不起,我不知道 Erlang,但它应该可以直接翻译)可以说:
result = db.$cmd.findOne({"distinct" : "collection_name", "key" : "tags"})
所以,那就是:你在你正在使用的任何数据库的“$cmd”集合上做一个 findOne。将集合名称和要在其上运行的键传递给它。
如果您需要一个您的驱动程序不提供帮助程序的命令,您可以查看http://www.mongodb.org/display/DOCS/List+of+Database+Commands以获得一些完整的数据库命令列表。
我知道这是一个老问题,但我遇到了同样的问题,在 PHP 中找不到真正的解决方案。
所以我想出了这个:
http://snipplr.com/view/59334/list-of-keys-used-in-mongodb-collection/
John,您可能会发现使用 Variety 很有用,这是一个用于分析集合模式的开源工具:https ://github.com/jamescropcho/variety
也许您可以在后台每 N 小时运行一次 Variety,并查询新创建的 VarietyResults 数据库以检索以给定字符串开头的唯一键列表(即,特定父项的后代)。
如果您有任何问题或需要其他建议,请告诉我。
祝你好运!