Json 将文件中的多个BSonDocuments插入MongoDB
我有一个包含以下JSON信息的文本文件:Json 将文件中的多个BSonDocuments插入MongoDB,json,mongodb,import,bson,Json,Mongodb,Import,Bson,我有一个包含以下JSON信息的文本文件: { "name" : "system-admin", "description" : "Administrador de Sistema", "id" : 9, "roleid" : 6 }{ "name" : "rs-promo-server", "description" : "Servidor de Promo", "id" : 10, "roleid" : 7 } 我正在尝试使用以下代码将多个BSONDocument
{
"name" : "system-admin",
"description" : "Administrador de Sistema",
"id" : 9,
"roleid" : 6
}{
"name" : "rs-promo-server",
"description" : "Servidor de Promo",
"id" : 10,
"roleid" : 7
}
我正在尝试使用以下代码将多个BSONDocuments插入Mongo:
BsonDocument doc = BsonDocument.Parse(Json); //Json is a string variable that holds the file content
var collection = BaseDatos.GetCollection<BsonDocument>(nombreCollection);
collection.Insert(doc);
BsonDocument doc=BsonDocument.Parse(Json)//Json是保存文件内容的字符串变量
var collection=BaseDatos.GetCollection(nombreCollection);
收款.插入(单据);
代码工作正常,但只插入文件的第一个BSON文档。
是否有办法将文本文件的所有文档插入到同一集合中
谢谢你给我的任何帮助 BsonDocument.Parse(str)只解析一个JSON文档。你有更多的机会
基本上你有两个选择:
如果您可以更改输入文件的格式,使每个JSON位于单独的行上(您需要最后一行空行来通知最后一个obj),则可以使用readline模块:
var fs = require('fs')
var file = 'data.d'
var readline = require('readline')
, rl = readline.createInterface({
input : fs.createReadStream(file)
, output: process.stdout
, terminal: false
})
rl.on('line', function (line) {
console.log('line: ')
var obj = {}
try {
obj = JSON.parse(line)
} catch (e) {
console.log('error: ' + e)
return
}
console.log(obj)
})
如果您不能更改格式,恐怕您必须自己解析字符串,找到JSON对象的边界并单独解析它们,诸如此类(假设您没有嵌套的JSON对象,否则会更复杂):
我认为,您还可以将对象存储到数组中,并将该数组存储在一个mongodb插入中:
var objs = []
objs.push(oneObj)
// save into db in batch
// db.coll.insert(objs, ...)
(澄清一下-data.d包含您的输入文件)谢谢,我能够编辑该文件,因此在每个Json文档之后,我插入一个空行,然后在导入时,将其拆分为一个数组,并为每个Json文档创建BSON文档。
var objs = []
objs.push(oneObj)
// save into db in batch
// db.coll.insert(objs, ...)