我有一组相同的文档,但可以根据使用情况分为两个不同的组。

这些组中的一个,我们称它们为“当前”,其查询的文件数量很少。

另一组,我们称之为“积压”,是查询频率不高的大量文档。

我的想法是,不将这两种类型的同一文档混合使用,将使我能够查询非常活跃的“当前”文档,而不必每次都浏览大量的“积压”。

这些应该在两个不同的集合中还是在同一“汽车”集合中?

mongo.collection('cars', function(err, cars){
    cars.find({type:'new', color:'blue'}).toArray(function(err, newBlueCars) {
        //do something with newBlueCars
    });
});

mongo.collection('cars', function(err, cars){
    cars.find({type:'used', color:'blue'}).toArray(function(err, usedBlueCars) {
        //do something with usedBlueCars
    });
});


要么

mongo.collection('cars.current', function(err, cars){
    cars.find({color:'blue'}).toArray(function(err, currentBlueCars) {
        //do something with newBlueCars
    });
});

mongo.collection('cars.backlog', function(err, cars){
    cars.find({color:'blue'}).toArray(function(err, backlogBlueCars) {
        //do something with usedBlueCars
    });
});

最佳答案

我认为我会发布一个实际的答案,因为它已经在注释中被充分散列了(另一个答案还不够好)。

将其全部保存在一个集合中的好处是:


可以在单个查询中查询所有记录
可以使用稀疏索引有效地索引“当前”记录


将其全部保存在一个集合中的缺点是:


索引可能需要使“当前”字段领先于所有索引,这会占用额外的空间并使查找速度变慢
无法使用稀疏索引建立多个字段的索引


将它们分为两个集合的好处是:


您会获得一个免费索引,因此无需在“当前”字段中使用所有索引
您的“当前”数据将具有更小的索引,可以轻松放入RAM


将它们分为两个集合的缺点是:


您将需要运行两个查询以对整个数据集进行任何处理,然后合并结果

关于javascript - 设置mongo的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10248520/

10-09 20:16