编写脚本以从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});

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

bangwancooler 回答:编写脚本以从Mongo Shell创建MongoDB集合吗?

Mongo Shell脚本仅仅是JavaScript脚本。您可以使用常规的JavaScript控制结构(例如循环)和字符串插值/字符串操作操作来生成集合名称。

我猜将会是

class MY_Form_validation extends CI_Form_validation {

    public function __construct( $rules = array() )
    {
        parent::__construct($rules);
    }

    //other validation functions...
}
,

Mongo shell

> use myNewDB;

> var myCollections = [ "Dog","Cat","Mouse","Name" ];
> myCollections.forEach( collName => db.createCollection( collName,{ autoIndexId : true} ) );

// -or-

> [ "Dog","Name" ].forEach( collName => db.createCollection( collName ) );

> show collections
Cat
Dog
Mouse
Name


注意:

从MongoDB 3.2版开始,不推荐使用

{ autoIndexId : true}选项。这是关于在_id字段上创建索引。 _id的唯一索引现在是必需的,并且会自动创建。因此,您不必指定选项(也不能指定false选项;它将给出错误)。

您可以创建一个详细的脚本以在创建集合后添加索引。参见Write scripts from Mongo Shell

,

我们有whole page关于为shell编写脚本。从文件执行的脚本使用稍微不同的语法来创建连接和获取数据库,例如:

打开连接:

new Mongo()
new Mongo(<host>)
new Mongo(<host:port>)

获取数据库:

conn = new Mongo();
db = conn.getDB("myDatabase");
,

使用以下命令创建一个名为“ my_scripts.js”的文件。该JavaScript定义了数据和命令以创建两个集合(namelet 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); } ),它们的数据(文档为JSON)和索引(在集合的load字段上创建索引) )。

my_scripts.js:

mongo > load("my_script.js");


运行脚本文件:

mongo shell 中运行脚本(您可以使用db.dogs.find(); db.cats.find(); db.dogs.getIndexes(); db.cats.getIndexes(); 命令指定文件路径):

_id

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

ObjectId

请注意,如果您在输入JSON数据中未提供_id,则会在文档中创建一个唯一的ImageView reddot = (ImageView) getView.findViewById(R.id.reddot); reddot.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { String redMsg = "red dot"; Toast.makeText(getContext(),redMsg,Toast.LENGTH_SHORT).show(); } } ); 字段(类型为#!/usr/bin/perl use strict; use warnings; use Data::Dumper; <DATA>; # Skip header. my %data; my %seen; while (<DATA>) { chomp; my ($app_id,$ci_name,$app_name) = split /,/; $data{$ci_name}{$app_id} //= { app_id => $app_id,app_name => $app_name }; } # Convert HoH to HoA. $data{$_} = [ values(%{ $data{$_} }) ] for keys(%data); print Dumper(\%data); )。

本文链接:https://www.f2er.com/3140935.html

大家都在问