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