【问题标题】:Insert Multiple Documents插入多个文档
【发布时间】:2014-07-31 02:08:02
【问题描述】:

我正在使用 Meteor.Method 并尝试插入多个文档,如 online documents 中所示

我正在使用这种模式来生成要插入的文档数组。

  var arr = [];

  for (i=0;i<10;i++){
    doc = {}
    doc["A"] = i;
    doc["B"] = i*18;
    arr.push(doc)
  }

  bulks.insert(arr)

它不是插入多个文档,而是将我的arr 中的每个文档嵌入到一个新文档中:

{
        "_id" : "YqfTbSmrGEcTAhFhj",
        "0" : {"A" : 0, "B" : 0 },
        "1" : {"A" : 1,"B" : 18},
        "2" : {"A" : 2,"B" : 36},
        "3" : {"A" : 3,"B" : 54},
        {...},
        "9" : {"A" : 9,"B" : 162}
}

如何构造数组以确保单独插入文档?

例如

{ "_id" : "YqfTbSmrGEcTAhFhj", "A" : 0, "B" : 0 }
{ "_id" : "mrGEcTAhFhjYqfTbS", "A" : 1, "B" : 18 }
{ "_id" : "hjYqfTmrGEcTAhFbS", "A" : 2, "B" : 36 }
{...}
{ "_id" : "hjYqfTmrGEcTAhFbS", "A" : 9, "B" : 182}

[添加信息] 我已经在 shell 中成功地做到了这一点,但在 Meteor 中却没有——所以这可能是驱动程序的限制。

Meteor 可以做到这一点吗?

【问题讨论】:

  • 我试过你在 mongodb 2.4.8 中编写代码,它工作正常并插入单独的文档,你使用的是哪个版本的 mongodb?
  • 我猜您在此处发布的内容与您实际运行的内容之间存在差异。 bulks.insert(arr) 不是 shell 的有效语法,它应该是 db.bulks.insert(arr)。您是在 mongo shell 中执行此操作还是使用驱动程序执行此操作?您可以在插入之前尝试打印 arr 吗?只需在 shell 中输入 arr。
  • 我只是将这个添加到问题中,因为我现在意识到这是驱动程序问题......我正在使用 Meteor
  • 为什么不把它们插入你使用arr.push的地方?
  • @Akshat 需要很长时间才能单独插入每个...

标签: mongodb meteor


【解决方案1】:

Meteor 集合不是 Mongo 集合的 100% 直接翻译,它们被包装在一个单独的层中。因此,您不能直接对它们使用 Mongo 方法。您使用的 insert 是 Meteor 集合插入。根据the documentation,它一次只允许您插入一个文档。

【讨论】:

    【解决方案2】:

    根据Github discussion/closed issue of April 22 2014,不可能批量插入,它是为将来准备的,但根据roadmap 未安排。

    Bulk mongodb insert in Meteor or Node 的答案显示了如何通过在 node.js 中变通来实现它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 2018-01-13
      • 2013-12-13
      • 1970-01-01
      • 2018-08-02
      • 2018-04-05
      • 2016-12-24
      相关资源
      最近更新 更多