使用MongoShell将大记录插入mongodb

使用MongoShell将大记录插入mongodb,mongodb,mongo-shell,Mongodb,Mongo Shell,我正在尝试将大型多边形数组插入到我的集合中。我正在使用以下命令插入数据 db.geoPolygonData.insert({"polygonName":"location1", "polygons":{"type":"Polygon", coordinates:[[[ 17.60083012593064, 78.18557739257812], [ 17.16834652544664, 78.19381713867188], [ 17.17490690610013, 78.73901367187

我正在尝试将大型多边形数组插入到我的集合中。我正在使用以下命令插入数据

db.geoPolygonData.insert({"polygonName":"location1", "polygons":{"type":"Polygon", coordinates:[[[ 17.60083012593064, 78.18557739257812], [ 17.16834652544664, 78.19381713867188], [ 17.17490690610013, 78.739013671875], [ 17.613919673106714, 78.73489379882812],[ 17.60083012593064, 78.18557739257812]]]}});
WriteResult({ "nInserted" : 1 })
  • 问题:如果多边形数组大小太大,则无法将其粘贴到insert命令中
我无法在mongo shell中执行超过完整的命令。此外,我还尝试以以下方式使用mongo shell变量

var file = cat('/home/vivek/locationCoordinates.json');
db.geoPolygonData.insert({"polygonName":"location6", "polygons":{"type":"Polygon", coordinates:[file]}});
但它将坐标存储在字符串而不是数组中。


请让我知道,执行如此大的查询有任何限制吗?或者,如果有其他方法来执行这些命令。

文档有一个限制,但可能不是您的情况

BSON文档的最大大小为16 MB

最大文档大小有助于确保单个文档不会使用过多的RAM或在传输过程中使用过多的带宽。要存储大于最大大小的文档,MongoDB提供了

另一点与Shell有关:

mongo shell提示符对每行的限制为4095个代码点。如果输入的行的代码点超过4095个,shell将截断该行

可能是一个很好的检查选项


对于如何处理长命令,有一些变通方法。您还可以找到一些好的建议。

cat
只是读取文件,而不是将文件解析为json

尝试:


创建名为
insert\u large\u array\u doc.js的JavaScript文件,包含以下内容:

let doc = { "polygonName": "location1",  "polygons": {"type": "Polygon", coordinates: [ [27.24391676007466, 77.99706560813125], [27.24663657232702, 77.99603771498144], ...
..., [27.24391676007466, 77.99706560813125] ] } }

db.collection.insertOne(doc);
mongo
shell(指定JS文件的整个文件路径):

文档将插入到集合中。查询文档:

mongo > db.collection.find()

这是prasad解决方案的一个变体,因为他的方案对我不起作用

在定义“doc”(或任何json)的地方定义javascript文件,但不要在末尾添加insertOne

let doc = {...my JSON...}
加载mongo并使用

load(".../MyPath/my_file.js")
现在,在mongo shell中设置了“doc”变量

db.myCollection.insertOne(doc)

这是文档限制,在我的案例中不适用。我想知道MongoShell在执行此类命令时的限制。我还检查了使用MongoShell变量。但仍然没有得到解决方案。更新了问题。尝试运行时是否出现错误?如果多边形数组大小太大,则无法在insert命令中粘贴,这是什么意思?这是否回答了您的问题@whoami:它正在截断数据。@john:我还使用mongo shell变量进行了检查。但仍然没有得到解决方案。更新了问题。JSON.parse()节省了我的时间。谢谢:)
let doc = {...my JSON...}
load(".../MyPath/my_file.js")
db.myCollection.insertOne(doc)