Meteor.js:MongoDB批量/批量升级
我在互联网上搜索了几个小时,寻找一种解决方案,在Meteor.js的smart collections中进行批量升级是有效的 场景: 我正在使用api,每12小时异步获取200个属性的更新信息。对于每个属性,我平均得到大约300个JSON对象的数组。70%的对象可能尚未更新。但对于其余30%的对象,我需要在数据库中更新它们。因为若不将这些30%的对象和数据库中的文档进行匹配,就无法找到它们,所以我决定将所有文档都插入 我的选项:Meteor.js:MongoDB批量/批量升级,mongodb,meteor,bulkinsert,upsert,smartcollection,Mongodb,Meteor,Bulkinsert,Upsert,Smartcollection,我在互联网上搜索了几个小时,寻找一种解决方案,在Meteor.js的smart collections中进行批量升级是有效的 场景: 我正在使用api,每12小时异步获取200个属性的更新信息。对于每个属性,我平均得到大约300个JSON对象的数组。70%的对象可能尚未更新。但对于其余30%的对象,我需要在数据库中更新它们。因为若不将这些30%的对象和数据库中的文档进行匹配,就无法找到它们,所以我决定将所有文档都插入 我的选项: 在对象数组上运行循环,并向上插入数据库中的每个文档 从集合中删除所
是否还有其他方法可以有效地实现这一点?MongoDb支持插入文档数组。因此,您可以在Meteors“rawCollection”的一次调用中插入所有文档
MyCollection.remove({}); // its empty
var theRaw = MyCollection.rawCollection();
var mongoInsertSync = Meteor.wrapAsync(theRaw.insert, theRaw);
var result = mongoInsertSync(theArrayOfDocs);
在生产代码中,如果插入失败,您将在try/catch中对此进行包装,以获取错误信息。只有在文档数组插入成功时,结果才是好的。上述带有rawCollection的解决方案确实插入,但它似乎不支持ordered:false指令,以便在一个文档失败时继续处理,原始集合在第一个错误时退出,这是不幸的 如果为false,则执行无序插入;如果其中一个文档出现错误,则继续处理数组中的其余文档