NodeJS,DocumentDB(通过Docooment)批量插入

我正在编写一个脚本来使用NodeJS和Docooment进行批量导入(从CSV)到documentDB。

有没有办法做批量插入?

我知道它是基于Mongoose的,但是有关Mongoose的大容量插入的示例与特定的MongoDBfunction有关。

我build议使用以下选项之一:

DocumentDB的数据迁移工具

将数据从CSV批量导入到DocumentDB的最简单方法是使用DocumentDB的迁移工具。 你可以在这里find如何使用它的细节。

以编程方式通过存储过程(数据库端脚本)

如果您希望以编程方式批量导入数据,我build议您检查DocumentDB的存储过程,这样您可以在数据库服务器本身上执行批处理和sorting操作(避免需要发出多个networking请求)。

以下是批量导入数据的示例存储过程 :

/** * This script called as stored procedure to import lots of documents in one batch. * The script sets response body to the number of docs imported and is called multiple times * by the client until total number of docs desired by the client is imported. * @param {Object[]} docs - Array of documents to import. */ function bulkImport(docs) { var collection = getContext().getCollection(); var collectionLink = collection.getSelfLink(); // The count of imported docs, also used as current doc index. var count = 0; // Validate input. if (!docs) throw new Error("The array is undefined or null."); var docsLength = docs.length; if (docsLength == 0) { getContext().getResponse().setBody(0); } // Call the CRUD API to create a document. tryCreate(docs[count], callback); // Note that there are 2 exit conditions: // 1) The createDocument request was not accepted. // In this case the callback will not be called, we just call setBody and we are done. // 2) The callback was called docs.length times. // In this case all documents were created and we don't need to call tryCreate anymore. Just call setBody and we are done. function tryCreate(doc, callback) { var isAccepted = collection.createDocument(collectionLink, doc, callback); // If the request was accepted, callback will be called. // Otherwise report current count back to the client, // which will call the script again with remaining set of docs. // This condition will happen when this stored procedure has been running too long // and is about to get cancelled by the server. This will allow the calling client // to resume this batch from the point we got to before isAccepted was set to false if (!isAccepted) getContext().getResponse().setBody(count); } // This is called when collection.createDocument is done and the document has been persisted. function callback(err, doc, options) { if (err) throw err; // One more document has been inserted, increment the count. count++; if (count >= docsLength) { // If we have created all documents, we are done. Just set the response. getContext().getResponse().setBody(count); } else { // Create next document. tryCreate(docs[count], callback); } } } 

您可以在这里find有关DocumentDB数据库端编程(存储过程,触发器和UDF)的参考文档。