2016-03-24 4 views
0

MongoコレクションをMyCollection = new Mongo.Collection(null);にコピーすることで、流行のローカルコレクションを作成していますが、特定のフィールドだけです。しかし、Meteorは深いネストされたフィールドを追加しています。このデータをどのように取得するのですか?Meteor jsローカルコレクション文書を解析する

{ 
 
    "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

実際の問題は何ですか?ローカルコレクションは、通常のコレクションと同様に照会、更新などができます(通常のコレクションでは禁止されているクライアントを一括削除できます)。オブジェクトを挿入している場合は、キーを使用してそれらを照会するだけです。例: 'MyCollection.findOne({" property1 ":value1});' –

答えて

0

.find({})コマンドから返されたカーソルを挿入しています。あなたは、私は流星が一括挿入のために家の方法を持っているdoesntのを聞いたパッケージまたはループを追い詰めると最後として、以下のようにクライアント側を挿入するためのいずれかの必要があります。

var myDocs = originalCollection.find ({}); 
_.each(myDocs, function(doc) { newCollection.insert(doc); }) 

また、元のNPMの方法をドリルスルーして使用して試すことができます以下のコードではローカルコレクションがどのように表示されるかはわかりませんが、fetchを使用すると、ドキュメントをカーソルではなく配列として取得できます。

newCollection.rawCollection.insert(oldCollection.find({}).fetch(), function(err, result) { console.log(err, result) }); 
+0

いいえ、私は自分の作成したドキュメントを挿入しています。 = {"property1":value1、 "property2":value2}。ただ1つの文書。 –

+0

ああ、ドキュメントを見るために呼び出すコードに.fetch()を追加する例myLocalCollection.find({})fetch() –