mongodb从不同的数据库中选择

时间:2015-06-23 13:19:18

标签: php mongodb mongodb-query

我有大约200个mongodb数据库。 每个数据库都有一个名为“Group”的集合,在这个集合中有一个名为'meldingId'的字段。

是否可以创建一个查找不同数据库中所有值的mongodb查询。

(我设法通过selectDB($ database_name)选择通过数据库循环的数据库bij)

2 个答案:

答案 0 :(得分:3)

在Mongo shell中,可以使用 db.getSiblingDB() 方法切换到admin数据库并通过运行admin命令Sub FillAtoF() Dim lastrow As Integer lastrow = Cells(Rows.Count, "A").End(xlUp).Row Dim rng As Range Set rng = Range(Cells(6, "A"), Cells(lastrow, "F")) For Each Area In rng.SpecialCells(xlCellTypeBlanks) Area.Cells = Range(Area.Address).Offset(-1, 0).Value Next Area End Sub 获取200个数据库的列表来完成此操作。迭代数据库列表并再次使用 db.getSiblingDB() 在数据库之间切换,查询db.runCommand({ "listDatabases": 1 })集合中的Group值。像这样:

meldingId

答案 1 :(得分:1)

MongoDB 一次查询多个数据库 与@chridam 的答案相同,但在泛化数据库名称方面略有改进,并作为单行: 该命令将统计不同数据库中所有同名的集合:

collectionName = "sites"; db = db.getSiblingDB("admin"); dbs = db.runCommand({ "listDatabases": 1 }).databases; dbs.forEach(function(database) { db = db.getSiblingDB(database.name); collection = db.getCollection(collectionName); print(collection + " count: " + collection.count())})

结果是:

db_0.sites count: 0
db_1.sites count: 0
db_2.sites count: 3
db_3.sites count: 4

您可以将它用于不同的目的,只需更改 collectionName 值或 forEach 函数中的查询即可。