在mongo集合中,我有一个单词列表(数百万字)。
{word:'a'}
{word:'b'}
{word:'x'}
{word:'y'}
{word:'z'}
我需要获得一个词的词汇邻接(下一个和前一个)。我正在寻找最有效的方法。
答案 0 :(得分:2)
为什么不简单地执行两个查询?
第一个用'word>寻找文件“YOURWORD”',用'word'(asc)排序,限制为1,然后第二个用'word< “YOUTWORD”',按'单词'(desc)排序,再次使用限制1。
我猜你在这个领域有一个索引,所以它应该是非常高效的。
这是一个代码示例:
var prev = db.words.find({"word": {$gt: "YOURWORD"}}).sort({"word": 1}).limit(1);
var next = db.words.find({"word": {$lt: "YOURWORD"}}).sort({"word": -1}).limit(1);