3
我有大約200個mongodb數據庫。 每個數據庫都有一個名爲'Group'的集合,在這個集合中有一個名爲'meldingId'的字段。mongodb從不同的數據庫中選擇
是否有可能創建一個mongodb查詢來查找不同數據庫中的所有值。
(我設法選擇數據庫BIJ通過selectDB($數據庫名稱)通過數據庫循環)
我有大約200個mongodb數據庫。 每個數據庫都有一個名爲'Group'的集合,在這個集合中有一個名爲'meldingId'的字段。mongodb從不同的數據庫中選擇
是否有可能創建一個mongodb查詢來查找不同數據庫中的所有值。
(我設法選擇數據庫BIJ通過selectDB($數據庫名稱)通過數據庫循環)
在蒙戈外殼,這可以通過使用db.getSiblingDB()
方法切換到管理數據庫,並得到一個列表來完成通過運行管理員命令db.runCommand({ "listDatabases": 1 })
來管理200個數據庫。遍歷數據庫列表並使用db.getSiblingDB()
再次在數據庫之間切換,查詢Group
集合中的meldingId
值。像這樣:
// Switch to admin database and get list of databases.
db = db.getSiblingDB("admin");
dbs = db.runCommand({ "listDatabases": 1 }).databases;
// Iterate through each database.
dbs.forEach(function(database) {
db = db.getSiblingDB(database.name);
// Get the Group collection
collection = db.getCollection("Group");
// Iterate through all documents in collection.
collection.find().forEach(function(doc) {
// Print the meldingId field.
print(doc.meldingId);
});
});
在MongoDB 3.0中,您無法創建跨多個集合或數據庫的單個查詢。您可以編寫一個函數來迭代數據庫/集合,但仍然會導致每個名稱空間的查詢(這聽起來像您可能已經在做的事情)。 – Stennie