我有这个 xml 数据要插入到 MongoDb 中。
<?xml version="1.0" encoding="UTF-8"?><PFA><Entity id="123" action="add" date="19-May-2020"></Entity><Entity id="124" action="add" date="29-Jul-2020"></Entity></PFA>
我要插入 mongodb 的 nodejs 代码如下:
const fs = require('fs');
const xml2js = require('xml2js');
const util = require('util');
const parser = new xml2js.Parser({
mergeAttrs: true,
explicitArray: false
});
fs.readFile('data.xml', (err, data) => {
parser.parseString(data, (err, result) => {
var jsonString = JSON.stringify(result);
var jsonObj = JSON.parse(jsonString);
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("abc");
// Define which collection to perform insertion
dbo.collection("entity").insertOne(jsonObj.PFA.Entity, function (err, res) {
if (err) throw err;
console.log("1 document inserted");
db.close();
});
});
});
});
但是当我运行它时,出现错误 MongoError: doc parameter must be an object
当我console.log(jsonObj.PFA.Entity);
时,我得到以下信息:
[ { id: '1227212', action: 'add', date: '19-May-2020' }, { id:
'1227291', action: 'add', date: '29-Jul-2020' } ]
为什么即使在我拥有 JSON.parse
之后它也不是对象?然后我如何将它作为对象传递给 mongodb?我无法将整个 jsonObj 传递给 mongodb,因为如果这样做,我只会插入一个文档而不是两个。
答案 0 :(得分:2)
[ { id: '1227212', action: 'add', date: '19-May-2020' }, { id:
'1227291', action: 'add', date: '29-Jul-2020' } ]
这是一个由两个对象组成的数组(用 JS 的说法)。
如果要在一次操作中插入多个文档,可以使用批量写入。 insertOne 需要单个文档/对象。