我通过将Mongo集合复制到MyCollection = new Mongo.Collection(null);来创建meteor中的本地集合,但只是某些字段。但是,Meteor创建了一大堆额外的深嵌套字段。如何从中获取数据?
{
"collection": {
"_docs": {
"_map": {
"FmXEA7cov87GzRnGs": {
"_id": "FmXEA7cov87GzRnGs",
"Value1": 1,
"Value2": 4,
"Value3": 2,
"etc. etc.": value
}
}
},
"_observeQueue": {
"_tasks": [],
"_running": false,
"_runTimeout": null
},
"next_qid": 1,
"queries": {},
"_savedOriginals": null,
"paused": false
},
"sorter": null,
"matcher": {
"_paths": {},
"_hasGeoQuery": false,
"_hasWhere": false,
"_isSimple": true,
"_selector": {}
},
"_transform": null,
"reactive": true
}
我只需要“FmXEA7cov87GzRnGs”中的内容,这是一个动态字段。
或者,是否有更好的方法来创建没有所有这些额外结构的本地集合?
答案 0 :(得分:0)
您正在插入从.find({})
命令返回的光标。您需要寻找一个包或循环并插入客户端,如上所述,我听说Meteor没有内部方法进行批量插入:
var myDocs = originalCollection.find ({});
_.each(myDocs, function(doc) { newCollection.insert(doc); })
你也可以尝试深入研究并使用下面的原始npm方法,但不确定它将如何像本地集合一样。注意获取将文档作为数组而不是游标:
newCollection.rawCollection.insert(oldCollection.find({}).fetch(), function(err, result) { console.log(err, result) });