Json 将文件中的多个BSonDocuments插入MongoDB

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

我有一个包含以下JSON信息的文本文件:

{
  "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, ...)