首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB toArray性能

MongoDB toArray性能
EN

Stack Overflow用户
提问于 2017-12-06 18:43:57
回答 1查看 3.3K关注 0票数 6

我正在尝试从Mongo/Node中的一个术语集合构建一个类别树,但是首先我使用$in选择所有的树元素:

代码语言:javascript
复制
console.time('termsCol.find');
var terms = await termsCol.find({term_id: {'$in': flatTree}});
console.timeEnd('termsCol.find');

console.time('termsCol.toArray');
terms = await terms.toArray();
console.timeEnd('termsCol.toArray');

这会执行:

代码语言:javascript
复制
termsCol.find: 0.162ms
termsCol.toArray: 30.910ms

我读过关于toArray性能的文章,但是我想知道是否有任何变化,因为这需要我在页面请求中花费大部分时间。

我对该集合有一个索引,它在~0.15ms范围内返回300个术语,但当我不得不再等待30 js才能在js中进一步使用该数据时,这对我没有帮助。

如果没有办法改进这个toArray业务,我可能会创建一个缓存集合,并在那里存储完整的术语树(希望它们适合16 to )。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-06 19:35:37

引用http://mongodb.github.io/node-mongodb-native/2.0/tutorials/streams/,您可以一个一个地流结果,并可以创建ids数组。

代码语言:javascript
复制
var MongoClient = require('mongodb').MongoClient
var url = 'mongodb://localhost:27017/myproject';
// Use connect method to connect to the Server
MongoClient.connect(url, function(err, db) {
    console.log("Connected correctly to server");
 var col = db.collection('terms');
    var ids = []
    var findCursor = col.find({term_id: {'$in': flatTree}});
    findCursor.on("data", function(data) {
       ids.push(data._id)
    });
    findCursor.on("end", function(data) {
      // let's finish
      console.log(ids)
    }); 
}); 

我没有检查时间,但确定它应该少一点(termsCol.find: 0.162‘t+ termsCol.toArray: 30.910ms)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47681370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档