Как я могу работать с "join", чтобы экспортировать данные из MongoDB?

У меня есть 2 коллекции:

list1 и list2.

У list1 есть несколько полей, а у list2 есть другие поля, в том числе идентификатор, относящийся к list1.

Мне нужно сделать запрос, чтобы экспортировать все элементы в list1, которые имеют хотя бы один элемент, ссылающийся на него в list2.

Как я могу это сделать? Это что-то вроде объединения из list1 в list2.

Мне нужно запустить команду mongo export для создания файла CSV.

1 ответ

Для этого я создаю короткую программу на javascript, которая передаст данные, которые вы хотите экспортировать, во новую временную коллекцию, которую вы затем сможете экспортировать.

Например, создайте файл export.js:

//initialise the export results collection
db.export.results.drop();

//create a cursor containing the contents of the list1 collection
cursor = db.list1.find();

while (cursor.hasNext()) {
    doc = cursor.next();

    //Check if the document exists in the list2 collection
    list2 = db.list2.find({"<id_fieldname>": doc.<id_fieldname>});
    if (list2.hasNext()) {
        //if it does exist, add the document from list1 to the new export collection
        db.export.results.insert(doc);
    }
}
print(db.export.results.count() + " matching documents found");

затем вы можете запустить это из строки cmd:

# mongo "localhost:27017/<dbname>" export.js

это создаст коллекцию с именем export.results, содержащую документ из коллекции list1 с документами в коллекции list2 с соответствующим полем id. Затем вы можете экспортировать или сбросить эту коллекцию:

# mongoexport --db <dbname> -c export.results -type csv -o <file_name>
Другие вопросы по тегам