41

一部のデータをインポートして mongo を使用しようとしましたが、ドキュメントの説明では正しく使用できません。

これは、mongoimport を使用してインポートした .json の例です: https://gist.github.com/2917854

mongoimport -d test -c example data.json

ショップごとに 1 つのオブジェクトを作成しているにもかかわらず、すべてのドキュメントが一意のオブジェクトにインポートされていることに気付きました。

そのため、問い合わせたいショップや何かを検索しようとすると、すべてのドキュメントが返されます。

db.example.find({"shops.name":"x"})

次のようなドット表記を使用して、ID で製品を取得するためにデータベースにクエリを実行できるようにしたいと考えています。

db.example.find({"shops.name":"x","categories.type":"shirts","clothes.id":"1"}

問題は、すべてのドキュメントが単一のオブジェクトのようにインポートされることです。
問題は、目的の結果を得るためにオブジェクトをどのようにインポートする必要があるかということです。

4

4 に答える 4

37

ドキュメントは次のことに注意してください。

このユーティリティは、1 行に 1 つの JSON/CSV/TSV 文字列を含む単一のファイルを取得して挿入します。

使用している構造では、要旨のエラーが修正されていると仮定して、基本的にshopsフィールドのみを含む 1 つのドキュメントをインポートしています。

データを個別のショップ ドキュメントに分割した後、次のようなものを使用してインポートします (ショップはコレクション名であり、 を使用するよりも理にかなっていますexample)。

mongoimport -d test -c shops data.json

次に、次のようにクエリできます。

db.shops.find({"name":x,"categories.type":"shirts"})
于 2012-06-12T15:28:43.543 に答える
23

パラメータがあります--jsonArray

単一の JSON 配列内の複数の MongoDB ドキュメントで表現されたデータのインポートを受け入れる

このオプションを使用すると、配列を渡すことができるので、外側のオブジェクト構文、つまり最初から までのすべてと"shops" :最後の}を削除するだけで済みます。

私自身、コマンドラインから配列を抽出できるjqという小さなツールを使用しています。

./jq '.shops' shops.json
于 2013-05-21T19:06:58.580 に答える
11

JSON からのインポート

mongoimport --db "databaseName" --collection "collectionName" --type json --file "fileName.json" --jsonArray

JSON 形式はこの形式である必要があります。(オブジェクトの配列)

[
    { name: "Name1", msg: "This is msg 1" },
    { name: "Name2", msg: "This is msg 2" },
    { name: "Name3", msg: "This is msg 3" }
]

CSVからインポート

mongoimport --db "databaseName" --collection "collectionName" --type csv --file "fileName.csv" --headerline

より詳しい情報

https://docs.mongodb.com/getting-started/shell/import-data/

于 2016-10-29T17:40:21.967 に答える
1

JSON のインポート

このコマンドを使用すると、特定のデータベースとコレクションにmongoimport人が読める形式でインポートできます。特定のデータベースとコレクションにデータJSONをインポートするには、次のように入力します。JSONmongoimport -d databaseName -c collectionName jsonFileName.json

于 2016-08-29T16:34:20.007 に答える