MongoDB更新了多个集合

时间:2013-10-05 14:34:16

标签: mongodb

我的mongo db包含以下集合名称,如

10.9.40.46
10.9.40.47
10.9.40.48
10.9.40.49
10.9.40.50
10.9.40.51
10.9.40.52

在所有具有N个文档的集合中,每个文档的共同密钥名称为“status”,默认情况下所有文档都具有“status”1,当我更新我的集合以将“status”1更改为0时,我使用以下查询< / p>

 db.getCollection("10.9.40.46").update({"status":1},{$set:{"status":0}},false,true)

上面的查询工作正常但是,我想要更新我的所有集合然后我将我的集合名称传递给手动查询,所以MongoDB中有任何概念,我使用数据库并使用单个查询或某事更新该数据库中的所有集合文档像那样?我还使用循环来读取所有集合并更新文档,但由于收集的数量很多,我需要很长时间。

2 个答案:

答案 0 :(得分:7)

不,没有API可以使用单个命令对多个集合执行相同的操作。那是因为你通常不会像使用它们那样使用集合。集合用于对相同类型的文档进行分组,而不是根据内容和/或密钥对它们进行分组。

组织文档的常规方法是将它们全部放在一个集合中,为每个文档添加IP地址字段,并在ip-field上创建索引以便更快地查找。

答案 1 :(得分:0)

你可以使用for循环。

var collection='10.9.40.'
var count=46;
var n=46;
var url='';
for(i =0;i<7;i++){
url="";
n=46+i;
url=count+n;
db.getCollection(url).update({"status":1},{$set:
{"status":0}},false,true)
}