Nah*_*iii 40 json mongodb nosql
我一直在尝试使用mongo导入一些数据,但是我无法在文档描述中正确使用它.
这是我使用mongoimport导入的.json示例:https://gist.github.com/2917854
mongoimport -d test -c example data.json
Run Code Online (Sandbox Code Playgroud)
我注意到,尽管为每个商店创建了一个对象,但我的所有文档都被导入到一个唯一的对象中.
这就是为什么当我试图找到一个商店或我想查询的任何东西时,所有文件都会被退回.
db.example.find({"shops.name":"x"})
Run Code Online (Sandbox Code Playgroud)
我希望能够使用点符号来查询数据库以通过id获取产品类似于:
db.example.find({"shops.name":"x","categories.type":"shirts","clothes.id":"1"}
Run Code Online (Sandbox Code Playgroud)
问题是所有文档都像单个对象一样导入.问题是:我如何
导入对象以获得我想要的结果?
Ere*_*ven 37
文件指出:
此实用程序采用单个文件,每行包含1个JSON/CSV/TSV字符串并插入它.
在您正在使用的结构中 - 假设要点上的错误是固定的 - 您实际上只导入一个带有shops字段的文档.
将数据分成单独的商店文档后,使用类似的东西导入(商店是集合名称,比使用更有意义example):
mongoimport -d test -c shops data.json
Run Code Online (Sandbox Code Playgroud)
然后你可以查询如下:
db.shops.find({"name":x,"categories.type":"shirts"})
Run Code Online (Sandbox Code Playgroud)
The*_*ail 23
有一个参数--jsonArray:
接受在单个JSON数组中导入用多个MongoDB文档表示的数据
使用此选项,您可以将其作为数组提供,因此您只需要剥离外部对象语法,即开头的所有内容,直到包括"shops" :,以及}最后.
我自己使用一个名为jq的小工具,它可以从命令行中提取数组:
./jq '.shops' shops.json
Run Code Online (Sandbox Code Playgroud)
从JSON导入
mongoimport --db "databaseName" --collection "collectionName" --type json --file "fileName.json" --jsonArray
Run Code Online (Sandbox Code Playgroud)
JSON格式应采用此格式.(对象数组)
[
{ name: "Name1", msg: "This is msg 1" },
{ name: "Name2", msg: "This is msg 2" },
{ name: "Name3", msg: "This is msg 3" }
]
Run Code Online (Sandbox Code Playgroud)
从CSV导入
mongoimport --db "databaseName" --collection "collectionName" --type csv --file "fileName.csv" --headerline
Run Code Online (Sandbox Code Playgroud)
更多信息
https://docs.mongodb.com/getting-started/shell/import-data/
| 归档时间: |
|
| 查看次数: |
61609 次 |
| 最近记录: |