2011-12-23 20 views
1

MongoDBのJSON-BSON構造について読んだことがありますが、ネストされたデータをどのように持っているか、どのようにクエリするかはわかりません。MongoDB:複雑なデータ構造を構築する

id: x, 
name: y, 
other: z, 
multipleArray: [ 
(lab1: A, lab2: B, lab3:C), 
(lab1: AB, lab2: BB, lab3:CB) 
(lab1: AC, lab2: BC, lab3:CC) 
.. 
.. 
] 

どのようにいくつかの、特定またはmultipleArray」のすべての要素を取得し、その後、このようなデータを格納するために:私は誰かがのように、配列内の配列を保存したい場合は、学びたいのですがどのような

"内容?

対象のリソースも高く評価されます。

+1

あなたの例では、multipleArrayは配列の配列ではありません。オブジェクトの単なる配列。あなたの入力は正しいですか? – Manoj

+0

こんにちは、私の不十分な知識のために私を許しなさい。この場合、配列の配列とオブジェクトの配列の違いは何ですか?説明していただけますか?ありがとうございました。 – Phil

答えて

4

ブライアンには、あなたが耳を傾けるべき大きなアドバイスがありました。

また、Manojによると、実際にはオブジェクトの配列があります。次は少しあなたを助けるかもしれない...

リストは、単にシーケンスを命じている:[1,2,3...]または[2,292,111]

最後の例では最初の要素がリスト/配列が示されている... 2番目は292で、2です角括弧で[ ]

オブジェクトは、キーと値をマップ:{ name: "Tyler", age: 26, fav_color: "green" }

名は25、などに、「タイラー」に年齢マップをマップ...とオブジェクトは、中括弧{ }

で示されています

mongodbのドキュメントはオブジェクトです。したがって、上のように、キーを値にマップします。これらの値は、文字列、数値、配列などの他のオブジェクト(ネストされたオブジェクト)でもかまいません。

したがって、ドキュメントを見てみましょう。 id、name、other、およびmultipleArrayのキーを持つオブジェクト(ドキュメント)があります。複数の配列がマップされる値は、{ }の配列[ ]です。

{ 
    id: x, 
    name: y, 
    other: z, 
    multipleArray: [ 
     {lab1: "A", lab2: "B", lab3:"C"}, 
     {lab1: "AB", lab2: "BB", lab3:"CB"}, 
     {lab1: "AC", lab2: "BC", lab3:"CC"} 
    ] 
} 

MongoDBはそれは基本的にあなたが照会されている値をとり、配列内のすべての値に対してそれを一致させようと、multikeysと呼ばれるこの機能を持っています。あなたはmultipleArray文書{lab1: "A", lab2: "B", lab3: "C"}が含まれていた文書を検索したい場合

、あなたはこのようなクエリ:私はすでに定義されているx、y、zを仮定しているdb.data.find({multipleArray: {lab1: "A", lab2: "B", lab3: "C"}})

もっと微妙な複雑さがありますが、詳細はmongodbサイトhereのドキュメントを読んでください。

+0

本当にありがとう、私は本当に本当にこの偉大な、シンプルでエレガントな答えに感謝します。 – Phil

1

あなたの質問は少し一般的であり、そのように良い答えを与えることは難しいです。

MongoDBを使用してデータを格納および照会するようにモデリングする場合は、実際にデータを使用および照会する方法を検討する必要があります。その答えに基づいて、データを格納するための優れたデータ構造を考え出すことができます。

MongoDBのクエリメソッド(http://www.mongodb.org/display/DOCS/Querying)に慣れて、MongoDBのデータを問い合わせる多くの方法を理解できるようになるとよいでしょう。

あなたが使用している言語には、データの保存とクエリの低レベルの詳細を抽象化する素晴らしいライブラリが必要ですが、MongoDBがどのようなクエリメソッドをサポートしているかを知る上で重要です。

一般に、MongoDBクエリは、指定されたドキュメント内のネストされたオブジェクトに "到達"させることができ、配列も含みます。

+0

リンクをありがとう、それは私が探していたものです! – Aaron

関連する問題