Mongodb 获取下一个和上一个文档
在mongo收藏中,我有一个单词列表(百万单词)Mongodb 获取下一个和上一个文档,mongodb,Mongodb,在mongo收藏中,我有一个单词列表(百万单词) 我需要得到一个单词的词汇邻接词(下一个和上一个)。我在寻找最有效的方法。为什么不执行两个查询呢 第一个将查找具有“word”>“YOURWORD”的文档,按限制为1的“word”(asc)排序,然后第二个将查找具有“word”>“YOUTWORD”的文档,按限制为1的“word”(desc)排序 我猜你在这个领域有一个索引,所以它应该是相当有性能的 下面是一个代码示例: var prev = db.words.find({"word": {$gt
我需要得到一个单词的词汇邻接词(下一个和上一个)。我在寻找最有效的方法。为什么不执行两个查询呢 第一个将查找具有“word”>“YOURWORD”的文档,按限制为1的“word”(asc)排序,然后第二个将查找具有“word”>“YOUTWORD”的文档,按限制为1的“word”(desc)排序 我猜你在这个领域有一个索引,所以它应该是相当有性能的 下面是一个代码示例:
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);
您的数据库是静态的还是严格地动态添加内容。@SushantGupta它不是完全静态的。但它是可读的。解决这个问题的一个方法是,只需在db中提供一个额外的字段,如
word\u index
,它存储该单词的简单词典排序。然后只需一个简单的$in查询[n-1,n,n+1],n是单词索引就可以了。但只有当它是你的db静态的时候才有意义。或者,即使您的数据库在计划的时间间隔后更新,但不是动态更新。因为db中的任何更改都需要一个完整的表更新。先前建议的一个变化是每个文档都有db引用(一个用于上一个文档,一个用于下一个文档),因此在插入新文档后,您只需要更新两个文档(在我看来,仍然非常复杂).对于像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);