目前我有mongodb数据库。每个文档都有字段data
,它是键值存储。
我想将其转换为
data:[
{'k': key1, v: value1},
{'k': key2, v: value2},
{'k': key3, v: value3}]
我目前的结构是:
data:{
key1: value1,
key2: value2,
key3: value3}
所以我可以使用搜索键(目前我正在使用$存在但是它会变慢并且在转换后我可以索引data.k并使用索引进行快速搜索。 最快的方法是什么?现在我正在使用pymongo单独编辑每个文档并保存它。但它会慢下来。有自然的方式来完成我的工作吗?
答案 0 :(得分:2)
如果我做对了,那就是一个无原子的解决方案;
db.qs.find().forEach(function(item)
{
item.data = new Array();
item.data.push({ k : 'key1', v : item.key1});
item.data.push({ k : 'key2', v : item.key2});
item.data.push({ k : 'key3', v : item.key3});
delete item.key1;
delete item.key2;
delete item.key3;
db.qs.save(item);
})
答案 1 :(得分:2)
找到基于@Disposer变体的解决方案
db.data.find({'d':{$exists: true}}).forEach(function(item){
d=new Array();
for (var k in item.d){
d.push({'k': k, 'v': item.d[k]})
}
item.d = d;
db.item.save(item)
})