【发布时间】: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 需要很长时间才能单独插入每个...