首页 > 解决方案 > 制作一个脚本以从 Mongo shell 创建 MongoDB 集合?

问题描述

您能否帮我编写 Mongo Shell 脚本来创建新的集合和索引。这是我编写的代码的一部分,我需要对其进行重构。

db.createCollection("Dog", { autoIndexId : true});

db.createCollection("Cat", { autoIndexId : true});

db.createCollection("Mouse", { autoIndexId : true});

db.createCollection("Name", { autoIndexId : true});

在上面的代码中,我可以编写单个语句来创建多个集合吗?并且还一次性将多个索引添加到一个集合?

标签: javascriptmongodb

解决方案


使用以下命令创建一个名为“my_scripts.js”的文件。dogs该 JavaScript 定义了创建两个集合 (和)的数据和命令cats,它们的数据(作为 JSON 的文档)和索引(name在集合的字段上创建索引)。

my_scripts.js:

let dogDocs = [
  {
    name: "pooch",
    breed: "poodle",
    weight: "6 lbs"
  },
  {
    name: "mutt",
    breed: "bulldog",
    weight: "10 lbs"
  }
];

let catDocs = [
  {
    name: "minni", 
    breed: "persian",
    color: "white"
  },
  {
    name: "tinkle",
    breed: "bombay",
    color: "black"
  }
];

let dogIndex = { name : 1 };
let catIndex = { name : 1 };

let collInfoObjs = [ 
  { coll: "dogs", data: dogDocs, index: dogIndex }, 
  { coll: "cats", data: catDocs, index: catIndex } 
];

for (obj of collInfoObjs) {
    db[obj.coll].insertMany(obj.data);
    db[obj.coll].createIndex(obj.index);
}


运行脚本文件:

mongo shell运行脚本(您可以使用load命令指定文件路径):

mongo > load("my_script.js");

脚本运行后,您可以单独使用以下命令来验证集合、它们的文档和索引:

db.dogs.find();
db.cats.find();
db.dogs.getIndexes();
db.cats.getIndexes();

请注意,如果您未在输入 JSON 数据中提供 ,则文档将创建一个唯一_id字段(类型为)。ObjectId_id


推荐阅读