如何使用“join”从MongoDB导出数据?

时间:2015-08-12 20:37:12

标签: mongodb mongodb-query mongoexport

我有两个系列:

list1和list2。

list1有一些字段,list2有另一个字段,包括引用list1的id。

我需要进行查询以导出list1上的所有项目,这些项目在list2上至少有一个引用他的项目。

我该怎么做?它类似于从list1到list2的连接。

我需要运行mongoexport命令来生成csv文件。

1 个答案:

答案 0 :(得分:3)

我这样做的方法是创建一个简短的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>