2015-06-23 2 views
3

У меня около 200 баз данных mongodb. Каждая база данных имеет коллекцию под названием «Группа», и в этой коллекции есть поле «meldingId».mongodb выбрать из разных баз данных

Возможно ли сделать один запрос mongodb, который находит все значения в разных базах данных.

(мне удалось выбрать базы данных BIJ зацикливание по базам данных по selectDB ($ имя_б_д))

+0

Как и в MongoDB 3.0, вы не можете создавать одиночные запросы, которые охватывают несколько коллекций или баз данных. Вы можете написать функцию для итерации баз данных/коллекций, но это все равно приведет к запросу на пространство имен (что похоже на то, что вы уже можете делать). – Stennie

ответ

2

В Монго оболочки, это может быть сделано с помощью db.getSiblingDB() метод, чтобы перейти к базе данных администратора и получить список из 200 баз данных, запустив команду администратора db.runCommand({ "listDatabases": 1 }). Перейдите по списку баз данных и снова используйте 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); 
    }); 

}); 
Смежные вопросы