Javascript 制作脚本以从MongoShell创建MongoDB集合?
你能帮我写MongoShell脚本来创建新的集合和索引吗。下面是我编写的部分代码,我需要对其进行重构Javascript 制作脚本以从MongoShell创建MongoDB集合?,javascript,mongodb,Javascript,Mongodb,你能帮我写MongoShell脚本来创建新的集合和索引吗。下面是我编写的部分代码,我需要对其进行重构 db.createCollection("Dog", { autoIndexId : true}); db.createCollection("Cat", { autoIndexId : true}); db.createCollection("Mouse", { autoIndexId : true}); db.createCollection("Name", { autoIndexId
db.createCollection("Dog", { autoIndexId : true});
db.createCollection("Cat", { autoIndexId : true});
db.createCollection("Mouse", { autoIndexId : true});
db.createCollection("Name", { autoIndexId : true});
在上面的代码中,我可以编写一条语句来创建多个集合吗?还可以一次性向一个集合添加多个索引 Mongo Shell脚本只是JavaScript脚本。您可以使用常规JavaScript控制结构(如循环)和字符串插值/字符串操纵操作来生成集合名称 我猜会的
[“狗”、“猫”、“鼠标”、“名称”]。forEach(函数(collName){
createCollection(collName,{autoIndexId:true});
});
来自Mongo shell:
注意:
{autoIndexId:true}
选项自MongoDB版本3.2以来已被弃用;它是关于在\u id
字段上创建索引的。\u id
的唯一索引现在是强制性的,并且是自动创建的。因此,您不必指定该选项(并且不能指定false
选项;它将给出一个错误)
还可以创建详细的脚本,以便在创建集合后添加索引。请参阅。我们有一个编写shell脚本的方法。从文件执行的脚本使用稍微不同的语法来创建连接和获取数据库,例如:
打开连接:
new Mongo()
new Mongo(<host>)
new Mongo(<host:port>)
使用以下命令创建一个名为“my_scripts.js”的文件。此JavaScript定义了用于创建两个集合(dogs
和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);
}
运行脚本文件:
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
命令指定文件路径):
脚本运行后,可以单独使用以下命令来验证集合、它们的文档和索引:
db.dogs.find();
db.cats.find();
db.dogs.getIndexes();
db.cats.getIndexes();
请注意,文档将具有唯一的
\u id
字段(类型为ObjectId
)如果您没有在输入的JSON数据中提供\u id
,则创建此文件。@uttamrao我的帖子不是完全回答了您的问题吗?我在寻找一些东西else@uttamrao那么我想你必须考虑修改你的问题further@uttamrao啊,对了,对不起,没有注意到变化。我调整了答案。您可以创建JS脚本,使用insert
方法将文档添加到集合中。或者,甚至可以使用OS命令行工具mongoimport
将数据从JSON或CSV文件导入到集合中。有关详细信息,请在中搜索您最喜欢的主题。请参阅本文中的代码,您可以将其包含在JS脚本中:。是的,每个集合一个。您可以将所有语句放在JavaScript文件中。这些语句将一个接一个地执行。请参阅我在答案中提供的链接:从MongoShell编写脚本。
mongo > load("my_script.js");
db.dogs.find();
db.cats.find();
db.dogs.getIndexes();
db.cats.getIndexes();