2016-12-28 5 views
0

深いJSONオブジェクトをMongo Collectionスキーマに登録しようとしています。オブジェクトは、面白い形状をしている:aは、キーがランダムなIDが対象であるため、深いJSONオブジェクトをMongoスキーマに変換する

{ 
    data: { 
    a: { 
     'kjndsgheid': { foo: true, bar: false }, 
     'weidmeirfi': { foo: true, bar: false }, 
     'dfnbewetee': { foo: true, bar: false }, 
     'dbnfryhred': { foo: true, bar: false } 
    }, 
    b: 1 
    } 
} 

これは私が困惑している - 私はブロブとしてaを保存することができ、しかしそれぞれランダムキーのプロパティが固定されていると、私はこれらを希望しますスキーマに表現されています。

これを行う方法はありますか?

+0

Mongoのスキルレスではありませんか?スキーマをどこで定義しますか? – 599644

+0

私はMeteor SimpleSchemaでスキーマを定義しています。しかし、私は自分の質問がそれに特有だとは思わない。 MongoはMeteorに関係なく上記のJSONブロブをファイルしません。私は間違っている可能性があります - 私はこの件についてnewbです。 – dthree

+0

OK、多分この質問に 'Meteor'とタグを付けるべきです。 MongoはこのJSONをあなたのために保存します: '> db.test.find({}) {" _id ":ObjectId(" 586441ba40561b849a48b949 ")、{" a ":{" kjndsgheid " {"foo":true、 "bar":false}、{"foo":true}、 "bar":false} "dbnfryhred":{"foo":true、 "bar":false}}、 "b":1}} > ' – 599644

答えて

1

それは少しスキーマを変更する必要が、私は、これを試してみた:

ASchema = new SimpleSchema({ 
    key : { 
    type : String, 
    }, 
    foo : { 
    type: Boolean, 
    }, 
    bar : { 
    type : Boolean, 
    } 

}) 

DataSchema = new SimpleSchema({ 
    a : { 
    type : [ASchema], 
    }, 
    b : { 
    type: Number, 
    }, 

}) 

Data = new Mongo.Collection('data') 
Data.attachSchema(DataSchema) 

の挿入は、外出先でJSONを変更関与します。また、キーの検証について気にしない場合は、カスタムASchemaではなくObject型を使用することもできます。

関連する問題