3

我的 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 时,我使用以下查询

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

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

4

2 回答 2

12

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

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

于 2013-10-05T14:52:17.900 回答
1

您可以使用 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)
}
于 2017-11-23T07:30:54.867 回答