Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 在MongoDB中使用mongoose批量插入多个集合大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有2个集合(data,MetaData) @H_696_5@ @H_696_5@数据模式是

@H_696_5@
{
_id: ......,name: ......,//not unique
mobile: ......,// unique or null
email: ......,// unique or null
uniquEID: ......,// unique or null
}
@H_696_5@插入需要至少一个唯一数据

@H_696_5@元数据架构是

@H_696_5@
{
_id: ......,dataId: ......,//refrence from _id of data collection
key: ......,value: ......
}
@H_696_5@JSON数组来自客户端

@H_696_5@
[{
  name: "abc",mobile: 9999999999,mData: {
    c1: 123,c2: "xyz"
  }
},{
  name: "qwerty",email: 'qwerty@mail.com',c2: "zxc"
  }
}
......
]
@H_696_5@我正在迭代数组并将它们中的每一个插入到MongoDB中.

@H_696_5@
let Bulk = Data.collection.initializeUnorderedBulkOp();
dataArr.forEach(function(item) {
  let data = service.generateData(item);
  // data.query: {mobile: ...,email: ...,uniquEID: ...}
  // if value exists then keys is also exists for mobile,email,uniquEID in query
  Bulk.find(data.query).upsert().updateOne(data.doc);
});
Bulk.execute((e,d) => {
  let MetaBulk = MetaData.collection.initializeorderedBulkOp();
  let length = dataArr.length;
  dataArr.forEach(function(data) {
    Data.findOne(data.query).exec(function(err,data) {
      length--;      
      for(let key in data["mData"]) {
        let value = data["mData"][key] || "";
        let mData = service.generateMdata(key,value,data._id);
        MetaBulk.find(mData.query).upsert().updateOne(mData.doc);
      }
      if(length == 0) {
        MetaBulk.execute();
      }
    });
  });
});
@H_696_5@我的解决方案现在工作正常但是它花了很多时间来迭代数据收集以查找MetaData集合的ID.

@H_696_5@我需要一种将数据批量插入MongoDB而无需查询数据ID的方法.是否有任何选项可以在单个查询中使用mongoose对多个集合执行批量upsert.

解决方法

您的方案的单个命令中没有多个集合更新.在您的情况下,如果您可以在父集合中包含元数据数组,则可以使用updateMany()使用单个命令插入数据. MongoDB还支持通过 db.collection.insertMany()批量插入. @H_696_5@ @H_696_5@
db.data.insertMany( [{ name: "abc",mData: { c1: 123,c2: "xyz"} },{name: "qwerty",c2: "zxc" }}]);
@H_696_5@你也可以使用db.collection.bulkWrite().

大佬总结

以上是大佬教程为你收集整理的node.js – 在MongoDB中使用mongoose批量插入多个集合全部内容,希望文章能够帮你解决node.js – 在MongoDB中使用mongoose批量插入多个集合所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。