我在一个具有10000个键/值对的对象上进行迭代并创建游戏项目' docs并将它们添加到我的'项目' field作为哈希对象,然后将它们保存到我的mongo集合中。
这是我的主要收藏品
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var myItemDbSchema = new Schema({
db_num: Number,
last_updated: Number,
items: {type: {}, default: {}}
}, { minimize: false });
module.exports = mongoose.model('myItemDb', myItemDbSchema);
然后是我的逻辑
PartnerAPI.getItems(function(err, partnerItems){
myItemDb.findOne({"db_num": 1}, function(myItemDB){
for(var partnerItem in partnerItems){
if(!myItemDB.items[partnerItem]){
var newItem = new gameItem({
name: partnerItems[partnerItem].name
});
myItemDB.items[partnerItem] = newItem;
}
myItemDB.markModified('items');
myItemDB.save(function(err){
logger.info("Saved");
});
}
});
});
合作伙伴项目如下所示
{
'ballistic-weapon-1':{name:'bl1', value:'rare'}
},
{
'ballistic-weapon-2':{name:'bl2', value:'rare'}
}
如果我只在项目字段中添加不超过300,然后将项目标记为已修改然后保存,则此工作正常...但如果我尝试添加所有10,000并尝试保存 - 他们不会。我可以为类型为{}的字段添加多少文档的大小限制?
有没有更好的方法来保存这些文档而无需编写一些逻辑来限制我每次迭代的保存量?
答案 0 :(得分:2)
有16mb的文件限制。因此,如果您的文档(BSON)大于16 MB,mongodb会抛出异常。