我有一个像这样的架构
var csData = new Schema({
csgo_number: Number,
last_updated: Number,
items: {type: Object, default: {}}
}, { minimize: false });
对于作为大型列表的项目,我决定使其成为哈希映射以更快地访问它。
items:{
item1: {
price: 2.00
},
item2:{
price: 1.00
},
item3:{
price: 3.00
}
}
我循环浏览了一堆html,当我遇到它时,我会解析并存储每个新项目。
var item1 = 'awp'
csData.findOne({"csgo_number": 1}, function(err, csgoDB){
csgoDB.items[item1] = {
price: 2.00
}
csgoDB.save(function(err){
if(err){console.log('something went wrong')}
});
});
即使我没有错误。我的数据无法保存。这是因为我的新物品没有_id吗?我用_id尝试了它,它仍然没有保存。
答案 0 :(得分:3)
从猫鼬5.1.0开始,有一个新类型Map。威奇做到了:
var csData = new Schema({
csgo_number: Number,
last_updated: Number,
items: {
type: Map,
of: String,
default: {}
}
}, { minimize: false });
要使用它,只需:
var item1 = 'awp'
csData.findOne({"csgo_number": 1}, function(err, csgoDB){
csgoDB.items.set('item1.price', 2.00);
csgoDB.save(function(err){
if(err){console.log('something went wrong')}
});
});
并获取它:
var item1 = 'awp'
csData.findOne({"csgo_number": 1}, function(err, csgoDB){
var value = csgoDB.items.get('item1.price');
});