我正在尝试从数组的MongoDB控制台批量插入到集合中。
我想做类似的事情。
obj1 = {_ id:ObjectId(),blabla:1};
obj2 = {_ id:ObjectId(),blabla:2};
objs = [obj1,obj2];
db.test.insert(OBJ文件);
db.test.find()
> {“_ id”:ObjectId(“xxxx”),“blabla”:1} > {“_ id”:ObjectId(“xxxx”),“blabla”:2}
但是,它不是在集合上插入两个对象,而是存储一个包含两个对象的列表。
db.test.find()
> {“_ id”:ObjectId(“xxx”),“0”:{“_ id”:ObjectId(“xxxx”),“blabla”:1},“1”:{“_ id”:ObjectId(“xxxx”) ,“blabla”:2}}
该功能似乎出现在其他驱动程序上(例如pymongo),但我无法通过JavaScript代码从mongodb控制台找到一种方法。
答案 0 :(得分:12)
Mongo命令shell版本2.1+中添加了将多个文档插入集合的功能。现在您可以在文档中插入文档和数组。
示例:
db.users.insert([{name:'Jon', email:'Jon_Doe@mail.com'},{name:'Jane', email:'Jane_Doe@mail.com'}])
有关更多信息,请查看这些jira已关闭功能请求:
答案 1 :(得分:2)
答案 2 :(得分:1)
objs.forEach(function(obj) { db.test.insert(obj) });
答案 3 :(得分:1)
批量版本可在2.6.6。
中找到var bulk=db.posts.initializeUnorderedBulkOp() ;
bulk.insert(obj1) ; bulk.insert(obj2);...
bulk.execute() ;
答案 4 :(得分:0)
您无法通过交互式命令shell执行批量插入。但Mongo附带了一个命令行工具,允许您将多个记录导入为JSON(最佳选项),CSV或二进制。
> mongoimport -h <host> -d <database> -c <collection> -u <user> -p <password> --file <input file> --jsonArray
jsonArray
标志允许您在使用json数组文件时插入多个记录。另一个重要的注意事项是确保文件以新行字符结尾。否则,不会解析最后一行。
答案 5 :(得分:-3)
简而言之:mongo控制台级别没有这样的批量插入API。