首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Collection.bulkwrite()只向mongodb数据库写入一个文档

为什么Collection.bulkwrite()只向mongodb数据库写入一个文档
EN

Stack Overflow用户
提问于 2019-06-30 11:24:06
回答 1查看 154关注 0票数 1

我已经使用ag网格构建了这个网格,我正在尝试通过单击saveInformation按钮将其数据存储在mongodb数据库中。

app.component.ts

代码语言:javascript
复制
saveInformation() {
    console.log('actionPlanPartiesrowData: ', this.actionPlanPartiesrowData);
    this.saveInformationService
    .saveActionPlanInformation(this.actionPlanPartiesrowData)
    .subscribe((response) => {
          console.log('INSIDE ACTION PLAN COMPONENT INSIDE SUBSCRIBE saveInformation');
          console.log('response: ', response);
    });
}

save-information.service.ts

代码语言:javascript
复制
  saveActionPlanInformation(actionPlanPartiesrowData
  ) {
    return this.http.post(`${this.uri}/fillActionPlan2`, actionPlanPartiesrowData, {
      responseType: "text"
    });
  }

在后端:

server.js

代码语言:javascript
复制
router.route('/fillActionPlan2').post((req, res) => {
    console.log('REQ.body of action plan is ', req.body);
    res.json('Action Plan data has been received on the server side')
    actionPlanRow.bulkWrite([{
        insertOne: {
            document: req.body[0]
        },
        insertOne: {
            document: req.body[1]
        },
        insertOne: {
            document: req.body[2]
        }
    }]).then(rest => {

        res.json(res.insertedCount, res.modifiedCount, res.deletedCount)
        console.log(rest.insertedCount, rest.modifiedCount, rest.deletedCount);
    });
})

下面是后端接收的数据: req.body:

Req.body:

代码语言:javascript
复制
REQ.body of action plan is  [ { project: 'row1 data',
    id: 'row1 data',
    riskId: 'row1 data',
    iso27001: 'row1 data',
    priority: 'row1 data',
    projectOwner: 'row1 data',
    estimatedCost: 'row1 data' },
  { project: 'row 2 data',
    id: 'row 2 data',
    riskId: 'row 2 data',
    iso27001: 'row 2 data',
    priority: 'row 2 data',
    projectOwner: 'row 2 data',
    estimatedCost: 'row 2 data' },
  { id: 'row 3 data',
    project: 'row 3 data',
    riskId: 'row 3 data',
    priority: 'row 3 data',
    iso27001: 'row 3 data',
    projectOwner: 'row 3 data',
    estimatedCost: 'row 3 data*' },
  {},
  {},
  {},
  {},
  {},
  {},
  {},
  {} ]

跑完后:

db.actionplanrows.find()

我总是只找到插入的最后一行:

代码语言:javascript
复制
{ "_id" : ObjectId("5d1899417fe11c05ecd9e7eb"), "id" : "row 3 data", "project" : "row 3 data", "riskId" : "row 3 data", "priority" : "row 3 data", "iso27001" : "row 3 data", "projectOwner" : "row 3 data", "estimatedCost" : "row 3 data*" }

我不明白为什么第一行和第二行不插入。为什么只执行最后一个insertOne()?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-07-01 09:14:36

我不知道为什么大容量写入只插入最后一个文档。

我使用insertMany而不是以这种方式解决了这个问题:

代码语言:javascript
复制
actionPlanRow.insertMany([req.body[0], req.body[1], req.body[2], req.body[3], req.body[4]], {
    multi: true
}

希望这对某人有帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56824468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档