Meteor js解析本地收集文档

时间:2016-03-24 18:13:09

标签: mongodb meteor

我通过将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”中的内容,这是一个动态字段。

或者,是否有更好的方法来创建没有所有这些额外结构的本地集合?

1 个答案:

答案 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) });