我是mongo的新手,我有一个独特的场景。
让我们说我们收集的文件类似于:
{date: ISODate(), text: "this is a large character field with over 1024 bytes"}
让我们想象一下,我们有10亿个文档,其中包含100,000个唯一文本值。将这些数据标准化会很好,但由于mongo不是关系数据,我们不这样做。
除了需要占用更多磁盘空间的事实之外,它并没有真正造成任何大问题。我们在文本上有一个哈希索引,只要我们知道特定的文本值,我们就可以根据它来提取记录。
但是,如果我们不知道价值呢?我们怎么能找到它?我很好奇是否有任何解决办法允许这样做。
例如,如果我们可以做这样的事情,那将是有用的。这可能吗?
var cursor = collection.myindex.find();
while(cursor.hasNext()) {
var hash = cursor.next().numberLong;
var doc = db.collection.findOne({text: {$hash: hash}});
print(doc.text);
}