我有一组相同的文档,但可以根据使用情况分为两个不同的组。
这些组中的一个,我们称它们为“当前”,其查询的文件数量很少。
另一组,我们称之为“积压”,是查询频率不高的大量文档。
我的想法是,不将这两种类型的同一文档混合使用,将使我能够查询非常活跃的“当前”文档,而不必每次都浏览大量的“积压”。
这些应该在两个不同的集合中还是在同一“汽车”集合中?
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/