我想要一个名为system的集合,在该集合下有一个名为sub_systems的文档,在其下有三个名为high mid&low的文档。每个高,中和低分别包含多个文档,如下所示
systems: {
sub_system_1 : {
high :{ {task1},
{task2},
.......
},
mid :{ {task1},
{task2},
.......
},
low :{ {task1},
{task2},
.......
},
},
sub_system_2 : {
high :{ {task1},
{task2},
.......
},
mid :{ {task1},
{task2},
.......
},
low :{ {task1},
{task2},
.......
},
},
............
}
Run Code Online (Sandbox Code Playgroud)
因此,下面是我的问题1.我将如何创建此类嵌套文档。2.如何在系统集合中插入新的子系统。3.如何在子系统文件下插入新的优先级(高,中,低)。4.如何在特定子系统和特定优先级(高,低,中)文档中插入新任务
我想使用mongo shell以及perl mongodb来了解这一点
db.systems.insert( [{"name": "sub_system_1", "data" : {"high" :["task1","task2"], "mid": ["task1","task2"], "low" : ["task1","task2"]}},{"name": "sub_system_2" ,"data": {"high" :["task1","task2"], "mid": ["task1","task2"], "low" : ["task1","task2"]}}])
Run Code Online (Sandbox Code Playgroud)
db.systems.insert( {"name": "sub_system_3", "data" : {"high" :["task1","task2"], "mid": ["task1","task2"], "low" : ["task1","task2"]}})
Run Code Online (Sandbox Code Playgroud)
// First you need to find the document using the name field
var sub_system_1 = db.systems.findOne({"name":"sub_system_1"})
// set your new priority
sub_system_1.data.new_priority = [ "task1", "task2" ]
// Save updated document
db.systems.save(sub_system_1)
Run Code Online (Sandbox Code Playgroud)
您还可以使用updateOne调用在一条语句中进行更新,请参阅以下文档 https://docs.mongodb.com/manual/reference/method/db.collection.updateOne/#db.collection.updateOne
// First you need to find the document using the name field
var sub_system_1 = db.systems.findOne({"name":"sub_system_1"})
// Now we add a new task to priority low
sub_system_1.data.low[sub_system_1.data.low.length] = "task3"
// Save updated document
db.systems.save(sub_system_1)
Run Code Online (Sandbox Code Playgroud)
#!/usr/bin/perl
use MongoDB::Connection;
my $mongodb_dbhost = 'mongodb.co.za';
my $mongodb_dbname = 'systems_production';
my $mongodb_dbtable = 'systems';
my $connection = MongoDB::Connection->new(host => $mongodb_dbhost);
my $collection = $connection->$mongodb_dbname->$mongodb_dbtable;
Run Code Online (Sandbox Code Playgroud)
my $data = $collection->insert( [
{
"name": "sub_system_1", "data" : {"high" :["task1","task2"], "mid": ["task1","task2"], "low" : ["task1","task2"]}
},
{
"name": "sub_system_2" ,"data": {"high" :["task1","task2"], "mid": ["task1","task2"], "low" : ["task1","task2"]}
}
]);
Run Code Online (Sandbox Code Playgroud)
$data = $collection->insert({
"name": "sub_system_3",
"data" : {"high" :["task1","task2"], "mid": ["task1","task2"], "low" : ["task1","task2"]}
});
Run Code Online (Sandbox Code Playgroud)
my $sub_system_1 = $connection->$mongodb_dbname->$mongodb_dbtable->find_one({'name' => 'sub_system_1'});
$sub_system_1->{data}->{new_priority} = [ "task1", "task2" ];
$collection->save($sub_system_1);
Run Code Online (Sandbox Code Playgroud)
my $sub_system_1 = $connection->$mongodb_dbname->$mongodb_dbtable->find_one({'name' => 'sub_system_1'});
$sub_system_1->{data}->{low}->[scalar(@$sub_system_1->{data}->{low})] = "task3";
$collection->save($sub_system_1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7724 次 |
| 最近记录: |